也许我没有理解C和C++之间的区别,但是我们何时以及为什么需要使用
extern "C" {
显然这是一个“链接约定”。
我简略地了解了一下,注意到MSVS附带的所有.h头文件都用它包围了它们的代码。什么样的代码属于“C代码”,而不是“C++代码”?我认为C++包括所有C代码,对吗?
我猜这并不是这样,C++与C不同,并且标准特性/函数存在于其中一个而不是两者(例如:printf是C,cout是C++),但C++通过extern "C"声明向后兼容。这样正确吗?
我的下一个问题取决于第一个问题的答案,但我还是在这里问了:既然用C编写的MSVS头文件被extern "C"{...}所包围,那么你何时需要在自己的代码中使用它呢?如果您的代码是C代码,并尝试在C++编译器中进行编译,由于您包含的所有标准头文件都已经有了extern "C",因此不会有任何问题,不需要添加这个声明,对吗?
那么什么情况下需要在C++中编译,但连接到已构建的C库或其他东西时使用这个声明呢?