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

extern "c"

时间:2015-02-10 20:15:52      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

http://songpengfei.iteye.com/blog/1100239

 

int foo(int a, int b);

  而这个函数的实现位于一个.c 文件中,同时,在.cpp 文件中调用了这个函数。那么,当CPP 编译器编译这个函数的时候,就有可能会把这个函数名改成_fooii ,这里的ii 表示函数的第一参数和第二参数都是整型。而C 编译器却有可能将这个函数名编译成_foo 。也就是说,在CPP 编译器得到的目标文件中,foo() 函数是由_fooii 符号来引用的,而在C 编译器生成的目标文件中,foo() 函数是由_foo 指代的。但连接器工作的时候,它可不管上层采用的是什么语言,它只认目标文件中的符号。于是,连接器将会发现在.cpp 中调用了foo() 函数,但是在其它的目标文件中却找不到_fooii 这个符号,于是提示连接过程出错。extern "C" {} 这种语法形式就是用来解决这个问题的。

 

在c++编译器下需要对c的函数声明做修饰

extern int foo(int a,int b);

声明 foo函数可被其他模块使用

extern "c"

标签:

原文地址:http://www.cnblogs.com/mattins/p/4284731.html

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