簡體   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