14

当我想编译时,我需要这样指定-std=c++11

g++ -Wall -std=c++11 main.cpp -o main

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

 g++ -Wall main.cpp -o main

没有旗帜。

4

2 回答 2

13

创建别名:alias g++='g++ -std=c++11'应该可以解决问题。

(不过 OS X 自带的 GCC 版本太老了,不支持 C++11,最好用clangand clang++。)

于 2013-08-04T05:50:07.510 回答
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++ 文件的生成文件,如果我愿意,我可以在其中轻松更改标志。

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

于 2013-08-04T06:31:37.767 回答