我想知道哪里最好放

#ifdef __cplusplus
extern "C" {
#endif

在C头文件中。

在开头或之后的所有其他内容都包括在内。为什么呢?

最佳答案

对此没有严格的规则,但请注意以下几点。

  • 通常的原则是,每个头文件都要照顾好自己(并且是自足的)。因此,根据此原理,无需将头文件包装在extern“C”中,因为头文件中将包含extern“C”(如果需要的话)。因此,在当前文件中,应将其放置在其他包含文件之后。
  • 但是,如果您有一堆头文件,那么您就不想在其中添加extern“C”,并希望通过单个include提供,一定要继续并将它们包装在文件宽外部“C”。

  • 只知道extern“C”背后的想法是它使编译器生成C友好链接。否则,使用C++编译器编译的代码会在使用C编译器编译的文件中查找错误的名称以进行链接,而找不到它们。

    关于c++ - 将#ifdef __cplusplus extern “C” {#endif,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16087451/

    10-13 08:34