¿Cómo habilito C ++ 11 en gcc?

Uso gcc 4.8.1 desde http://hpc.sourceforge.net en Mac OSX Mountain Lion. Estoy intentando comstackr un progtwig C ++ que utiliza la función to_string en . Necesito usar la bandera -std=c++11 cada vez:

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

¿Hay alguna manera de incluir esta bandera por defecto?

H2CO3 es correcto, puede usar un archivo MAKE con el conjunto CXXFLAGS con -std = c ++ 11 Un archivo MAKE es un archivo de texto simple con instrucciones sobre cómo comstackr su progtwig. Crea un nuevo archivo llamado Makefile (con una M mayúscula). Para comstackr automáticamente su código, simplemente escriba el comando make en una terminal. Es posible que deba instalar make.

Aquí hay uno simple:

 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) 

Se supone que todos los archivos .cpp están en el mismo directorio que el archivo MAKE. Pero puede ajustar fácilmente su archivo MAKE para que admita un src, incluya y cree directorios.

Editar : modifiqué el comstackdor predeterminado de C ++, mi versión de g ++ no está actualizada. Con clang ++ este archivo MAKE funciona bien.

Como se mencionó anteriormente, en el caso de un proyecto, Makefile o de otro modo, este es un problema de configuración del proyecto, donde probablemente también deba especificar otros indicadores.

Pero, ¿qué pasa con los progtwigs g++ file.cpp && ./a.out , donde normalmente solo escribirías g++ file.cpp && ./a.out ?

Bueno, me gustaría tener algún #pragma para activar en el nivel de origen, o tal vez una extensión predeterminada, digamos .C11 o .C11 o lo que sea, activarlo por defecto. Pero a partir de hoy, no existe tal característica.

Pero, como probablemente trabaje en un entorno manual (es decir, shell), puede tener un alias en usted .bashrc (o lo que sea):

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

o, para G ++ más nuevo (y cuando quiera sentirse “real C ++ 11”)

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

Incluso puedes alias a g++ , si odias tanto a C ++ 03;)

Creo que podrías hacerlo usando un archivo de especificaciones.

Bajo MinGW podrías correr
gcc -dumpspecs> especificaciones

En donde dice

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

Lo cambias a

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

Y luego colóquelo en
/ mingw / lib / gcc / mingw32 / / especificaciones

Estoy seguro de que podría hacer lo mismo sin una construcción MinGW. Sin embargo, no estoy seguro de dónde colocar el archivo de especificaciones.

La carpeta probablemente sea / gcc / lib / o / gcc /.