gpt4 book ai didi

c++ - extern "C"用法(标记的放置)

转载 作者:行者123 更新时间:2023-11-30 02:25:21 25 4
gpt4 key购买 nike

以下有区别吗:

// c_header.h
void foo(void);
// main.cpp
extern "C" {
#include "c_header.h"
}
void main(void)
{
foo();
}

// c_header.h
extern "C" {
void foo(void);
}
// main.cpp
#include "c_header.h"
void main(void)
{
foo();
}

对 foo 的两个函数调用都没有被 C++ 损坏吗?

最佳答案

是的,有区别。第一个示例是糟糕代码的示例,而第二个示例是执行此操作的正确方法。

要理解我为什么这么说,请考虑有多少翻译单元可能包含此 header 。因为如果你知道一个事实只会有一个,你甚至不需要担心 mangling。

但是,如果 C 编译器也希望看到 c_header,则需要将那些 extern "C" 指令隐藏在 #ifdef ___cplusplus< 后面.

关于c++ - extern "C"用法(标记的放置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com