我想使用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