[英]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.