簡體   English   中英

編譯 C 庫以在 C++ 構建中鏈接...您需要指定 C++ 標准嗎?

[英]Compiling C Libraries to be linked in C++ builds... do you need to specify C++ standards?

這可能是一個愚蠢的問題,但我不是 100% 確定並且無法通過谷歌搜索找到好的答案,所以我想我應該問它。

我正在將與 C++ 代碼鏈接的新編譯器上構建一些 C 庫。 我正在從頭開始編譯庫,因為我將編譯器版本從 gcc4.x 升級到 gcc5.x,這要求我使用 -std=gnu++14(我使用的語言標准)重新編譯所有 C++ 庫目標)。 我的問題是,在編譯為 C 庫時是否需要將 -std=gnu++14 添加到我的 CFLAG 值中? 我不認為我這樣做,但想確認我不會遇到重大問題。

謝謝。

不可以。當您使用 C 編譯器編譯 C 代碼時,您可以指定您使用的 C 語言版本,但不能指定 C++ 語言版本。 指定 C++ 語言版本是沒有意義的,因為這樣的設置可能沒有明顯的效果。

由於 C++ 編譯器會修改符號名稱,因此您需要用extern C {塊包圍 C 代碼。 常見的成語是這樣的。

#ifdef __cplusplus
extern "C" {
#endif

/* My C symbols, functions, etc */

#ifdef __cplusplus
}
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM