探索extern "C"
有一种说法是C++是另一种C语言,虽然在C++创建之初的初衷也是期望一个更好的C,但是C++中全局变量和函数所采用的编译和连接方式却与C语言不完全相同。这就会引起C++和C语言在处理全局变量和函数时所采用的不同方式,并且当这两种方式需要C++与C兼容时,就会引入一些平衡两种处理方式的另一种处理方法。
下面的代码段,在C程序里,应该经常可见
client:00000000006008b8 b dtor_idx.6147client:0000000000400470 t frame_dummyclient:00000000004004cd T functionclient:0000000000400498 T main发现了吧,C++ 和C编译器对同一个函数编译之后的符号是不一样的,C就是以函数名作为符号,而C++比较复杂,这也是为什么C++可以支持重载,而C不能支持的原因了。