![](/img/trans.png)
[英]How to correctly write declarations of extern arrays in C's header files?
[英]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.