面试题1:在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?
//extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。
答案:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。
假设某个函数的原型void foo(int x, int y),该函数被C编译器变异后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字
C++提供了C连接交换指定符号extern"C"解决名字匹配问题