2016-04-01 5 views
1

Ich bin nur neugierig, ob die Position der Standard-Auswahlschalter (-std=c++11 für meinen Fall) in g ++ Befehlszeile relevant ist oder nicht. Der Grund dafür ist, dass die folgende:Position von -std = C++ 11 in g ++ Befehlszeile

g++ -ftest-coverage -fprofile-arcs -std=c++11 
     -ansi -fpermissive -finline-functions -Wno-long-long 
     -fvisibility-inlines-hidden -m64 -Wall -Wextra 
     -g -o CMakeFiles/common.dir/cryptoclass.cpp.o 
     -c /home/work/common/cryptoclass.cpp 

lässt sich nicht kompilieren, während der folgende:

g++ -ftest-coverage -fprofile-arcs 
     -ansi -fpermissive -finline-functions -Wno-long-long 
     -fvisibility-inlines-hidden -m64 -Wall -Wextra 
     -g -o CMakeFiles/common.dir/cryptoclass.cpp.o 
     -std=c++11 -c /home/work/common/cryptoclass.cpp 

nicht kompiliert. Die einzige Änderung ist, dass der -std=c++11 an das Ende der Switches verschoben wurde.

g ++ die folgende Warnung gibt:

error: #error This file requires compiler and 
     library support for the ISO C++ 2011 standard. 
     This support is currently experimental, and must 
     be enabled with the -std=c++11 or -std=gnu++11 compiler options. 

Version:

g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 
+0

Ich mache immer '-std = ...' die erste Option für den Compiler und funktioniert gut. – Galik

Antwort

7

Per documentation ermöglicht -ansi Option, um die C++ - 98/C++ - 03-Standard.

Wenn Sie mehrere Standardoptionen festlegen, überschreibt die letztere Option die erstgenannte Option. Gleiches gilt für andere sich gegenseitig ausschließende Optionen wie Optimierungsstufen.

Verwandte Themen