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

  • 相关阅读:
    搭建家庭无线Adhoc网络
    IPv4到IPv6的过渡技术
    IPV6的安全性
    IPv6技术简要解析
    安全删除和恢复文件的脚本
    什么是 WPS(WiFi Protected Setup)
    华为:IPv6过渡技术中的探索
    IPV6地址设置及使用方法
    部分IIS日志参数名称解释
    《隐秘的角落》
  • 原文地址:https://www.cnblogs.com/xhyu/p/3976031.html
Copyright © 2011-2022 走看看