现在的位置: 首页 > 综合 > 正文

extern “C”

2013年12月04日 ⁄ 综合 ⁄ 共 647字 ⁄ 字号 评论关闭

C++ 程序中调用被 C编译器编译后的函数,需要在函数声明时(头文件中)加上 extern “C”,如:

文件c_test.h与c_test.c分别是函数fun_c的定义与实现文件:

 

c_test.h

 

c_test.c

 

这样,当c_test.h和c_test.c文件被C编译器编译后,在其他C++程序中就能正常调用在c_test.h中声明的fun_c函数(当然需要c_test.h和c_test.o);

因为extern “C”的含义就是:

    为了在C++代码中调用用C写成的库文件(或函数),就需要用extern "C"来告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。

    C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:void foo(int x, int y);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。

C++提供了C连接交换指定符号externC”来解决名字匹配问题。

 

抱歉!评论已关闭.