extern关键字最原始的用处是变量声明,这里不细说。
//xk> 在C++程序中调用C编译器编译的函数
我们知道,在C++程序中可以直接调用C语言写的函数,不仅在语法上C++编译器基本可以编译C程序,而且C++程序还可以调用C编译器编译好了的函数,不过要加上extern "C".
因为C++支持函数重载,这就造成C++编译器和C编译器的一个重大不同:对函数名的处理。
例如函数void foo(int x, int y), 该函数被C编译器处理后的函数名类似于_foo,而被C++编译器处理后的函数名类似于_foo_int_int(这里只是比方,实际上C++编译器对函数名的处理各个编译器不尽相同,而且更加复杂)。
所以C++提供了C连接交换指定符号,即extern "C"来解决连接时的函数名称问题。