我有一段代码如下所示。假设它在一个名为 example.cpp
的文件中
#include <fstream>
#include <string> // line added after edit for clarity
int main() {
std::string filename = "input.txt";
std::ifstream in(filename);
return 0;
}
在 Windows 上,如果我输入 cmd
命令 g++ example.cpp
,它将失败。我认为这是一长串错误,主要是由于链接器抱怨无法从 string
转换为 const char*
。
但是,如果我使用这样的附加参数运行编译器: g++ -std=c++17 example.cpp
,它将编译并正常工作,没有任何问题。
当我运行前一个命令时会发生什么?我猜 C++ 编译器的默认版本标准被调用,但我不知道是哪个?作为程序员/开发人员,我是否应该始终使用带有额外参数的后一个命令?
原文由 Manuel 发布,翻译遵循 CC BY-SA 4.0 许可协议
C 和 C++ 的默认语言标准在 GCC 手册中指定。您可以通过以下方式找到这些:
浏览到 https://gcc.gnu.org/onlinedocs/
选择您感兴趣的 GCC 版本的 GCC #.## Manual 链接,例如 GCC 7.5.0:
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/
单击主题链接 GCC 支持的语言标准,然后单击主题 C++ 语言(或 C 语言)。这些主题中的任何一个都会有一个句子,例如:
以上两个例子是针对 GCC 7.5.0 的。