为什么要使用 'extern "C++"' ?

85
在这篇文章中,关键字extern可以跟随"C"或"C++"。为什么要使用'extern "C++"'?它是否实用?

6
好问题,欢迎来到 Stack Overflow :) - Paul Dixon
该文章现已移至https://learn.microsoft.com/en-us/cpp/cpp/extern-cpp?view=vs-2019。 - MathuSum Mut
11个回答

-2

extern "C" 用于指定 C++ 函数应该具有 C 链接。这意味着实现方式取决于具体情况,但通常它会关闭 C++ 的名称重载和严格类型检查(即取消名称修饰)。当你想要从 C 代码中调用一个 C++ 函数时,你需要使用它:

extern "C" void Foo();   // can be called easily from C

关于 extern "C++",虽然 C++ 标准允许使用它,但我在实际代码中从未见过。我猜它是一个无操作语句。

1
实际上,它主要用于相反的情况:从C++代码调用C函数。如果你在C++代码中调用printf,链接器需要知道它在库中作为printf而不是printf_#$D%G^_&_^ - James Curran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接