最近在尝试编译 C 代码时遇到的编译错误引发了默认 C 标准是什么的问题使用 g 编译器时。涉及的代码包括文件流和字符串操作。使用命令“g example.cpp”编译时,由于涉及字符串和 const char* 之间的转换错误,编译失败。然而,使用命令 'g -std=c 17 example.cpp' 解决了这个问题。
为了调查未指定 -std 标志时 g 使用的默认标准,提出了一种方法来确定特定版本的 g 支持的 C 标准的默认版本:
Bash:执行以下命令:
g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
PowerShell:运行以下命令:
g++ -dM -E -x c++ NUL | Select-String __cplusplus
这些命令的输出命令将显示类似于以下内容的行:
#define __cplusplus 199711L
“__cplusplus”后面的值表示默认的 C 标准版本。在本例中,它是 C 98 (199711)。
作为程序员,是否或始终指定 -std 标志的决定取决于几个因素因素:
一般情况下,建议使用 -std 标志显式指定 C 标准,以避免由于意外行为隐式默认设置。通过控制 C 标准,程序员可以确保最佳性能、代码正确性和可移植性。
以上是g 默认采用什么 C 标准?的详细内容。更多信息请关注PHP中文网其他相关文章!