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

      

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

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

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

    BY XHYU

  • 相关阅读:
    HTML技巧: 语义化你的代码
    css sprite
    Redis主从复制原理
    idea修改快捷键
    Ubuntu14.20 安装docker,创建centos6.7容器,并访问centos容器
    [转]SQL 中 with as 的用法
    ftp与sftp及sftp和scp的区别
    Linux top 命令
    Linux free 命令
    ubuntu 源方式 安装jdk
  • 原文地址:https://www.cnblogs.com/xhyu/p/3976031.html
Copyright © 2011-2022 走看看