extern "C"{}的作用就是说明这在{}范围之内说明的函数是按c,或者需要按c标准来编译。可以从声明调用二个方面来描述它的作用:
1.声明
以下c++代码:
extern "C" { void test() }
void test()
{
// do test
}
表示希望编译器使用c标准来编译test函数。而在c语言中不支持extern "C"。
2.c++代码调用c代码
extern "C" { void test() //test()是c代码或者或者说明是按c标准编译的代码 }
int main()
{
test();
}
无论test函数是c写的还是c++写的,只要它是按c标准编译的,就需要加上extern "C" 声明
3.c调用c++代码
c要调用c++代码,在c++代码中必须以extern "C" 来声明函数,如上文1所示。以下是c代码
void test();
int main()
{
test();
}
所以自定义的函数库最好加上extern "C"{}这样,无论是c++还是c都可以调用该函数库,如果没有这个声明,并且函数库是c++写的,那么c语句就很难调用该函数库了.