繁体   English   中英

在我的头文件中添加“extern C”有什么好处?

[英]What's the advantage of adding “extern C” in my header files?

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

为什么选择第一个选项? 这只是一个风格问题(当有人包括它们时,键入的字符数量)?

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

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

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

#ifdef __cplusplus
extern "C" {
#endif

// all of your legacy C code here

#ifdef __cplusplus
}
#endif

另一种方法是将它与#include ,但如果你在C头文件中执行它,那么你只需要执行一次,再加上它向后兼容。

如果您不使用图书馆,那么尝试使用图书馆的人会感到很痛苦。 如果在没有C ++应用程序的情况下使用C头,则用户将收到编译器或链接器错误,这对于不熟悉该问题的人来说尤其令人困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM