当我想编译时,我需要这样指定-std=c++11
:
g++ -Wall -std=c++11 main.cpp -o main
我想知道是否有永久设置 -std=c++11 标志的解决方案,以便可以这样做:
g++ -Wall main.cpp -o main
没有旗帜。
创建别名:alias g++='g++ -std=c++11'
应该可以解决问题。
(不过 OS X 自带的 GCC 版本太老了,不支持 C++11,最好用clang
and clang++
。)
我知道这已经被接受了,但我觉得我有一些建议可以提供。对于一个你应该使用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++ 文件的生成文件,如果我愿意,我可以在其中轻松更改标志。
至于 bash 别名,我建议您像这样使用别名,这样如果您不想使用 c++11 标准,alias clang++11='clang++ -std=c++11
就不会覆盖它。clang++
最后,您可以将我刚刚向您展示的行添加到.bash_profile
您家或~
文件夹中的 Mac 上,这将使更改永久化。更改后运行source .bash_profile
以使更改生效。在 linux 上,我认为该文件称为.bashrc
. 希望这些技巧能在你使用 c++ 时对你有所帮助,我建议你学习 mac 命令行,它与 linux 的命令行有所不同,了解它可以做的一些事情会非常有用。