我有一段代码如下所示.让我们说它在一个名为的文件中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;
}
Run Code Online (Sandbox Code Playgroud)
在Windows上,如果我输入cmd命令g++ example.cpp,它将失败.这是一个很长的错误列表,我认为主要是由于链接器抱怨无法转换string为const char*.
但是如果我使用像这样的附加参数运行编译器:g++ -std=c++17 example.cpp它将编译并正常工作而没有任何问题.
当我运行前命令时会发生什么?我猜测C++编译器的默认版本标准被调用,但我不知道哪个?作为程序员/开发人员,我应该总是使用后一个命令和额外的参数吗?
为了用C++ 11标准编译程序,我们需要做:
g++ -std=c++11 myProgram.cpp -o myProgramExec
Run Code Online (Sandbox Code Playgroud)
但是我可以将g ++的默认标准设置为C++ 11,这样我就不必一次又一次地提到这个选项虽然我也可以在我的.bashrc中为它添加一个别名:
alias g++='g++ -std=c++11';
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有比这更好的方法.是否有任何g ++的配置文件可以编辑,以实现这一目标?或者有一些更简单的方法来做到这一点?