Mac终端默认配置c++ 11/14



我想使用c++11/14功能,如基于范围的循环,但在做g++ program.cpp时得到警告。如果用编译器标志g++ -std=c++11 program.cpp完成,警告就会消失。是否有一种方法可以在g++命令上默认使用c++11/14(即每次不传递编译器标志)。

请向编译器知识有限的人解释,并且只需要c++11/14功能来解决竞争性编程问题(即使这通常是一个坏主意,可能是由于向后兼容性?)

简短的回答:更新你的g++

根据g++文档

如果没有给出c++语言方言选项,默认为-std=gnu++17。

您可能正在使用旧版本的g++。您可以通过在终端中运行g++ --version来检查它。如果您使用的是Linux,您还可以在终端中使用man g++ | col -b | grep -B 1 -e '-std.* default'命令从g++手册中提取默认的c++标准。

如果你不想更新你的g++,你也可以设置一个命令别名,比如在你的.bashrc

中添加alias g+++='g++ -std=c++14'

如果您使用的是gcc版本>4.9.3使用g++ -std=c++14 program.cpp

如果您使用的是较旧的版本,请使用g++ -std=c++1y program.cpp

注意:考虑在命令中的program.cpp之前添加-Wall标志以获得警告,它们比您想象的更有帮助!

提示:如果您是一名初学者,并且不希望学习曲线太陡,请在使用完整的命令行之前尝试使用IDE。

编辑:如果你想要一个命令为"默认值"你可以在你的.bashrc.bash_profile文件中添加alias mycc='g++ -std=c++14 -Wall',然后你就可以使用mycc program.cpp

最新更新