将-std = c ++ 11设为mac终端的默认值

Cho*_*dou 11 c++ macos terminal gcc c++11

当我想编译时,我需要指定-std=c++11如下:

g++ -Wall -std=c++11 main.cpp -o main
Run Code Online (Sandbox Code Playgroud)

我想知道是否有永久设置-std = c ++ 11标志的解决方案,以便可以这样做:

 g++ -Wall main.cpp -o main
Run Code Online (Sandbox Code Playgroud)

没有旗帜.

小智 11

创建一个别名:alias g++='g++ -std=c++11'应该做的伎俩.

(但是,OS X附带的GCC版本是如此古老以至于它不支持C++ 11,你最好使用clangclang++.)

  • @Choubidou好吧,就像你使用GCC一样.(但是,嘿,你不能只是google"clang usage"?或者"clang manual"?或者在命令行输入`clang --help`?) (2认同)

aar*_*man 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
Run Code Online (Sandbox Code Playgroud)

现在每当我从SO下载某些蹩脚的代码时,我都有一个c和c ++文件的makefile,如果我愿意,我可以轻松地更改标志.

至于bash别名,我建议你使用别名,alias clang++11='clang++ -std=c++11这样你就不会覆盖它,clang++如果你不想使用c ++ 11标准.最后,您可以在我.bash_profile家或~文件夹中的Mac上添加我刚刚向您展示的行,这将使更改成为永久性的.更改后,运行source .bash_profile以使更改生效.在linux上我认为该文件被调用.bashrc.希望这些技巧可以帮助你解决问题,我建议你学习mac命令行,与linux有区别,知道它可以做的一些事情是非常有用的.