首页 > 代码库 > VS2010 中 error 2732: 链接规范与的早期规范冲突 的解决
VS2010 中 error 2732: 链接规范与的早期规范冲突 的解决
在实验室做项目的时候遇到了这个问题,终于整明白了。
一般来说这个错误出现在类似以下的语句中
extern "C" int yylex(void);
extern "C" int yyparse( void );
extern "C" int yyerror(const char *fmt, ...);
我们看extern 这个关键字,是C++在调用其他语言的时候用来拓展函数的,extern "C" 就是说当我们在一个项目中出现了C、C++混编,C++文件中调用了C的函数,那么需要将这个函数拓展过来用。
但是extern "C" 也被编译器看作是函数的类型参数之一,因此extern "C" int yylex(void);和int yylex(void);如果同时在项目里出现,则会出现error2732,也就是定义冲突。
解决方案:
找到函数的声明部分和调用部分,在两处都加上如下代码:
#ifdef __cplusplus
extern "C"{#endifint yyparse( void );//。。。各种需要的函数声明#ifdef __cplusplus }#endif
编译,就可以通过啦啦啦。
重点注意函数初次声明和拓展声明两处,如果发生了声明则一定要同时含有或不含有相同的extern关键字。
OK,继续我的搭环境之路T^T
BY XHYU
VS2010 中 error 2732: 链接规范与的早期规范冲突 的解决
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。