关于C和C++的函数重载

时间:2021-03-15 19:09:57
C应该没有函数重载,而C++有。
在调用数学库arpack++时,头文件blas1c.h:

#include "arch.h"
#include "blas1f.h"

#ifndef BLAS1C_H
#define BLAS1C_H

// ASSUM

inline float assum(const ARint &n, const float dx[], const ARint &incx) {
  return F77NAME(sasum)(&n, dx, &incx);
} // assum (float)

inline double assum(const ARint &n, const double dx[], const ARint &incx) {
  return F77NAME(dasum)(&n, dx, &incx);
(下面代码省略)
然后编译的时候报错,说这两个函数assum重载:
1>c:\users\yuxi\documents\visual studio 2010\projects\arpack\arpack\include\blas1c.h(29): error C2733: 不允许重载函数“assum”的第二个 C 链接

那么,怎么就判定了这个头文件是c的呢?我的代码都是c++的。也没有用extern C。怎么解决?
谢谢!

2 个解决方案

#1


如果是 微软的编译器

参数  
/Tc , 以C代码来编译
/Tp , 以C++代码来编译

#2


引用 1 楼  的回复:
如果是 微软的编译器

参数  
/Tc , 以C代码来编译
/Tp , 以C++代码来编译

不好意思,再问一下,这个参数该怎么用呢?在项目属性哪里添加呢?谢谢!

#1


如果是 微软的编译器

参数  
/Tc , 以C代码来编译
/Tp , 以C++代码来编译

#2


引用 1 楼  的回复:
如果是 微软的编译器

参数  
/Tc , 以C代码来编译
/Tp , 以C++代码来编译

不好意思,再问一下,这个参数该怎么用呢?在项目属性哪里添加呢?谢谢!