如何在gcc中启用C ++ 11?

我在Mac OSX Mountain Lion上使用http://hpc.sourceforge.net上的gcc 4.8.1。 我想编译一个C ++程序,它使用<string>to_string函数。 我需要每次使用flag -std=c++11

 g++ -std=c++11 -o testcode1 code1.cpp 

有没有办法在默认情况下包含这个标志?

H2CO3是正确的,你可以使用一个makefile来设置CXTFLAGS和-std = c ++ 11 makefile是一个简单的文本文件,里面有关于如何编译程序的说明。 创build一个名为Makefile的新文件(大写M)。 要自动编译您的代码,只需在terminal中inputmake命令。 您可能需要安装make。

这是一个简单的:

 CXX=clang++ CXXFLAGS=-g -std=c++11 -Wall -pedantic BIN=prog SRC=$(wildcard *.cpp) OBJ=$(SRC:%.cpp=%.o) all: $(OBJ) $(CXX) -o $(BIN) $^ %.o: %.c $(CXX) $@ -c $< clean: rm -f *.o rm $(BIN) 

它假定所有.cpp文件都与makefile位于同一个目录中。 但是你可以轻松地调整你的makefile以支持src,include和build目录。

编辑 :我修改了默认的c ++编译器,我的g ++版本不是最新的。 与铿锵++这个生成文件工作正常。

正如前面提到的 – 对于项目, Makefile或其他项目,这是项目configuration问题,您可能还需要指定其他标志。

但是,一次性程序如何,通常只写g++ file.cpp && ./a.out

嗯,我非常希望在源代码级别有一些#pragma开启,或者默认的扩展名 – 例如.cxx或者.C11或者其他,默认触发它。 但截至今天,没有这样的特点。

但是,因为您可能正在手动环境(即shell)中工作,您可以在您的.bashrc (或其他)中有一个别名:

 alias g++11="g++ -std=c++0x" 

或者,对于较新的G ++(以及想要感受“真正的C ++ 11”)

 alias g++11="g++ -std=c++11" 

如果你讨厌C ++ 03那么甚至可以用别名来g++ ;)

我认为你可以使用规格文件。

在MinGW下,你可以运行
gcc -dumpspecs>规格

它在哪里说

 *cpp: %{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} 

你改变它

 *cpp: %{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} -std=c++11 

然后放进去
/ mingw的/ LIB / GCC /的mingw32 / <版本> /规格

我敢肯定,如果没有MinGW构build,你也可以做同样的事情。 不知道在哪里放置规格文件。

该文件夹可能是/ gcc / lib /或/ gcc /。