这个问题以前还真没碰到过。现从网上找的,看的还不太透彻,额。
好像是在一种语言的源程序中去引用在另一种语言的源程序中定义的函数时会用到。大概是因为C++和C的编译器对变量名、函数名之类名称的处理方式不同(例如C++必须始终保证对函数重载的支持,即使只有一个同名的函数也要按重载的方式来处理,而C没有这一说的),在C++代码中直接引用C文件中的函数而不通过extern c打招呼的话,C++编译器按照默认的方式去连接obj文件时会很悲剧,大体就是这个样子吧。
记得以前用VC6.0编译.c文件时感觉很别扭,还是习惯写成.cpp交给它去编译,不知道是不是和这个有关。虽然写的是C语言风格的程序,但是只要写在.cpp文件里面了,它就是C++的了。
下面两点是那篇参考文章的作者总结的。
1、被extern "C" 限定的函数或变量是 extern 类型的。
2、被 extern "C" 修饰的变量和函数是按照 C 语言方式编译和链接的。
PS:*3*、C++文件引用C文件中的函数/变量(需要让C++编译器识别C的东西),或C文件中引用C++文件中的函数/变量(需要照顾C编译器),此时需要在C++文件中写extern c
参考资料:http://codingdao.com/wp/post/cpp-extern-c-note/
本回答被提问者采纳