也许我不了解 C 和 C++ 之间的区别,但是我们何时以及为什么需要使用
extern "C" {
? 显然它是一个“链接约定”。
我简要地阅读了它,并注意到 MSVS 中包含的所有 .h 头文件都用它包围了它们的代码。究竟什么类型的代码是“C 代码”而不是“C++ 代码”?我以为 C++ 包含所有 C 代码?
我猜测情况并非如此,C++ 是不同的,标准特性/功能存在于其中之一但不是两者都存在(即:printf 是 C,cout 是 C++),但是 C++ 是向后兼容的,尽管外部“C”声明。这个对吗?
我的下一个问题取决于第一个问题的答案,但无论如何我都会在这里问:由于用 C 编写的 MSVS 头文件被 extern "C" { ... } 包围,你什么时候需要使用它自己在自己的代码中?如果您的代码是 C 代码并且您正尝试在 C++ 编译器中编译它,那么它不应该毫无问题地工作吗,因为您包含的所有标准 h 文件都已经在 C++ 编译器中包含了 extern "C" 的东西?
在 C++ 中编译但链接到已构建的 C 库或其他东西时,您是否必须使用它?