extern "C"和error C2733问题

在头文件中进行类定义时,无需添加“ extern “C” ”,不然会出现error C2733问题

  • 对于“C/C++混合编程”问题可参照:http://blog.csdn.net/zzwdkxx/article/details/44244535
  • **其中尤其说明:被extern “C”限定的函数或变量是extern类型的;extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。被extern “C”修饰的变量和函数是按照C语言方式编译和连接的。
  • *在C语言中没有类的概念,所以无需多此一举添加 extern “C”,直接在头文件中定义就好。
    -**添加 extern “C”时,报错为:
    e:\visualstudio 2013\vs2013\vc\include\xtr1common(15): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(20): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(32): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(51): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(57): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(64): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(70): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(77): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(85): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(93): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(99): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(106): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(112): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(118): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(124): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(131): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(137): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(143): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(149): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(156): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(164): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(170): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(176): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(182): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(188): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(195): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(202): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(208): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(214): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(220): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(226): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(232): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(253): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(259): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(267): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(274): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(280): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(286): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(292): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(299): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(305): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(313): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(319): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(325): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(332): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(340): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(348): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(356): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(364): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(379): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtr1common(419): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(16): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(23): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(76): error C2732: 链接规范与“pow”的早期规范冲突
    1> e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(76) : 参见“pow”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(77): error C2732: 链接规范与“pow”的早期规范冲突
    1> e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(77) : 参见“pow”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(79): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(84): error C2733: “pow”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(512) : 参见“pow”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(91): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(91): error C2733: “acos”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(474) : 参见“acos”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(92): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(92): error C2733: “asin”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(476) : 参见“asin”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(93): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(93): error C2733: “atan”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(478) : 参见“atan”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(94): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(94): error C2733: “atan2”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(480) : 参见“atan2”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(95): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(95): error C2733: “ceil”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(531) : 参见“ceil”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(96): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(96): error C2733: “cos”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(484) : 参见“cos”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(97): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(97): error C2733: “cosh”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(485) : 参见“cosh”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(98): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(98): error C2733: “exp”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(488) : 参见“exp”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(100): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(100): error C2733: “floor”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(536) : 参见“floor”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(101): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(101): error C2733: “fmod”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(496) : 参见“fmod”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(102): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(102): error C2733: “frexp”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(537) : 参见“frexp”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(103): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(103): error C2733: “ldexp”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(542) : 参见“ldexp”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(104): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(104): error C2733: “log”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(501) : 参见“log”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(105): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(105): error C2733: “log10”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(502) : 参见“log10”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(108): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(108): error C2733: “sin”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(519) : 参见“sin”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(109): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(109): error C2733: “sinh”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(520) : 参见“sinh”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(110): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(110): error C2733: “sqrt”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(521) : 参见“sqrt”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(111): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(111): error C2733: “tan”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(522) : 参见“tan”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(112): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(112): error C2733: “tanh”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(523) : 参见“tanh”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(129): error C2733: “_Fma”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(124) : 参见“_Fma”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(134): error C2733: “_Fma”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(129) : 参见“_Fma”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(139): error C2894: 模板不能声明为有“C”链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(144): error C2733: “fma”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\math.h(493) : 参见“fma”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(157): error C2733: “_Remquo”: 不允许重载函数的第二个 C 链接
    1> e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(152) : 参见“_Remquo”的声明
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(162): error C2733: “_Remquo”: 不允许重载函数的第二个 C 链接
    1>e:\visualstudio 2013\vs2013\vc\include\xtgmath.h(162): fatal error C1003: 错误计数超过 100;正在停止编译

报错表明错误源相近,百度查到
“#ifdef __cplusplus
extern “C” {
#endif”
并依据本文开头推荐的链接,将其删除后“========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========”

如上以供参考。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值