如何编译包含extern" C"的C代码指示?

时间:2016-02-11 05:34:11

标签: visual-c++ visual-studio-2008 extern

在Visual Studio 2008中,在文件dbgheap.c中编码了一个很好的调试堆。它实现了_CrtDumpMemoryLeaks()

等功能

我注意到该文件包含extern "C"指令,这些指令似乎不被Microsoft自己的编译器所允许。代码如:

extern "C" _CRTIMP int __cdecl _CrtDumpMemoryLeaks(
    void
    )
{
    /* only dump leaks when there are in fact leaks */

如果您尝试自行编译,只会产生错误。显然有编译器标志允许这种语法,但任何人都知道标志是什么?

1 个答案:

答案 0 :(得分:0)

在这种情况下,事实证明,虽然代码是100%合法的C,除了这些extern "C"限定符,它还与标志/TP完美编译,这意味着,“编译为C ++无视文件名。“

所以,我想这就是他们所做的。

我认为MSFT忽略了将extern "C"限定符放在某种依赖于__cplusplus标志或其他东西的条件编译中。