码迷,mamicode.com
首页 > 其他好文 > 详细

VS2010 中 error 2732: 链接规范与的早期规范冲突 的解决

时间:2014-09-16 23:32:21      阅读:1099      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   文件   div   sp   问题   代码   

在实验室做项目的时候遇到了这个问题,终于整明白了。

一般来说这个错误出现在类似以下的语句中

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" { #endif int yyparse( void ); //。。。各种需要的函数声明 #ifdef __cplusplus } #endif

 

  

编译,就可以通过啦啦啦。

 

重点注意函数初次声明和拓展声明两处,如果发生了声明则一定要同时含有或不含有相同的extern关键字。

 

OK,继续我的搭环境之路T^T

 

BY XHYU

VS2010 中 error 2732: 链接规范与的早期规范冲突 的解决

标签:style   blog   color   ar   文件   div   sp   问题   代码   

原文地址:http://www.cnblogs.com/xhyu/p/3976031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!