2

我正在阅读 C++ FAQ Lite 的第 32 节:如何混合 C 和 C++它说我应该强烈考虑在我的头文件中添加extern "C" {...}(当然,添加适当的预处理器指令。这样,我可以在 C++ 源文件中包含“没有任何外部“C”废话“的头文件:

// Get declaration for f(int i, char c, float x)
#include "my-C-code.h"

“废话”,不是那么容易的选择似乎是这样的:

extern "C" {
  // Get declaration for f(int i, char c, float x)
  #include "my-C-code.h"
}

为什么首选第一个选项?这只是风格问题(以及当有人包含它们时要键入的字符数)?

4

4 回答 4

3

您可以将语句放在头文件中一次,或者使用它的每个人都可以将语句放在包含头文件的任何位置。前者在我看来当然是更好的风格。

于 2013-01-10T19:39:23.840 回答
3

是的,这只是一种风格。但它确实让人们在使用你的图书馆时生活更轻松,所以它可能值得坚持。

于 2013-01-10T19:36:47.087 回答
2

这样做的目的是允许您将 C 头文件与您的 C++ 代码一起使用,因为"__cplusplus"将定义宏。但是您仍然可以将它与未定义宏的遗留 C 代码一起使用,因此它不会看到唯一的 C++ 构造。

#ifdef __cplusplus
extern "C" {
#endif

// all of your legacy C code here

#ifdef __cplusplus
}
#endif

另一种方法是将其与#include.

于 2013-01-10T19:46:37.713 回答
0

如果您不包含它,那么尝试使用您的库的人会很痛苦。如果在 C++ 应用程序中使用 C 头文件而不使用该头文件,则用户将收到编译器或链接器错误,这对于不熟悉该问题的人来说尤其令人困惑。

于 2013-01-10T19:39:42.943 回答