g 中的 C 標準偵測
在 C 中,標準編譯器版本可能會影響程式碼的行為和相容性。使用 g 進行編譯時,了解預設標準至關重要。
考慮以下程式碼片段:
#include <fstream> #include <string> int main() { std::string filename = "input.txt"; std::ifstream in(filename); return 0; }
如果您在Windows 上使用g example.cpp 指令編譯此程式碼,可能會出現以下錯誤:由於與從std::string 轉換為const char* 相關的連結器錯誤而失敗。但是,使用 g -std=c 17 example.cpp 指定特定的 C 標準可以解決此問題。
要確定g 使用的預設C 標準,可以執行以下命令:
g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
例如,在Ubuntu 4.8.4 版本的g 上使用此命令,您將得到輸出:
#define __cplusplus 199711L
這表示此版本g 的預設C 標準是C 98 ( 199711L 代表C 標準1997 年11 月的修訂版)。
建議在使用 g 編譯時始終明確指定所需的 C 標準。這可確保程式碼符合預期標準,並避免使用過時或不必要的標準可能引起的潛在相容性問題。
以上是如何確定 g 使用的預設 C 標準?的詳細內容。更多資訊請關注PHP中文網其他相關文章!