当我想编译时,我需要像这样指定-std=c++11
:
g++ -Wall -std=c++11 main.cpp -o main
我想知道是否有永久设置-std = c ++ 11标志的解决方案,以便可以这样做:
g++ -Wall main.cpp -o main
没有旗帜。
答案 0 :(得分:11)
创建一个别名:alias g++='g++ -std=c++11'
应该可以解决问题。
(但是,OS X附带的GCC版本是如此古老以至于它不支持C ++ 11,您最好使用clang
和clang++
。)< / p>
答案 1 :(得分:5)
我知道这已经被接受,但我觉得我有一些建议可以提供。对于一个你应该使用c ++的makefile,这是我用来回答SO的那个。
CFLAGS=-std=c++11
CFLAGS+=-stdlib=libc++
CC=clang++
#flags for test.c
cc=clang
DEBUG=-g
#warnings
WARNINGS=-Weverything
#always have -Weverything on for SO lol
OPT= -O0 -O1 -O2 -O3 -O4
test: test.cpp
$(info set CC for compiler)
$(CC) $(CFLAGS) $< -o $@ $(DEBUG)
stack: stack.cpp
$(CC) $(CFLAGS) stack.cpp -o $@ $(DEBUG) $(WARNINGS)
testc: test.c
$(cc) $< -o $@ $(DEBUG)
clean:
rm test
现在每当我从SO下载某些蹩脚的代码时,我都有一个c和c ++文件的makefile,如果我愿意,我可以轻松更改标志。
至于bash别名,我建议你将其别名为alias clang++11='clang++ -std=c++11
,这样如果你不想使用c ++ 11标准就不会覆盖clang++
。最后,您可以将我刚刚显示的行添加到您家中或.bash_profile
文件夹中的mac上的~
,这将使更改成为永久性更改。更改后,请运行source .bash_profile
以使更改生效。在linux上我认为该文件名为.bashrc
。希望这些技巧可以帮助你解决问题,我建议你学习mac命令行,与linux有区别,知道它可以做的一些事情非常有用。