Extern "C" 的作用

在我们创建DLL工程的时候,常会看到在dll头文件要导出的函数声明中有extern "C" 关键字。

只有在编写C++代码的时候才应使用这个修饰符,在编写C代码的时候不用此修饰符。因为C++编译器经常会对函数名和变量名称在编译的时候进行不可察觉的改变(mangle),而这在函数连接的时候就会导致严重的问题。例如,dll库是作者使用C++编写的,而测试的程序是由C语言编写的,那么在编译的过程中,dll库中的函数名会被编译器进行改变,但由C语言所写的测试程序并不会被改变,那么在连接器试图连接可执行文件的时候,会发现可执行文件引用了一个并不存在的符号而报错。extern "C" 的作用就是告诉编译器,不要对C++代码的函数进行改变。

所以在混合使用C语言和C++编程的时候一定要使用extern "C"修饰。

posted @ 2019-12-25 16:09  Genius⋅Tintin  阅读(426)  评论(0)    收藏  举报