由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。被extern "C"修饰的变量和函数是按照C语言方式编译和链接的。extern “C”这个声明的真实目的是为了实现C++与C及其它语言的混合编程。