我有一段代码,看起来像下面这样。让我们假设它在一个名为 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;
}
在窗口中,如果我在 cmd
中键入命令 g++ example.cpp
,它将失败。这是一个长长的错误列表,我认为主要是由于链接器抱怨无法从 string
转换到 const char*
。
但是如果我使用如下附加参数运行编译器: g++ -std=c++17 example.cpp
,它将编译和工作没有任何问题。
当我运行前一个命令时会发生什么?我猜测 C + + 编译器的默认 版本标准会被调用,但我不知道是哪个?作为一个程序员/开发人员,我应该总是使用后一个命令和额外的参数吗?