2016-04-01 22 views
1

Standart seçim anahtarının (durumum için -std=c++11) konumu, g ++ komut satırında ilgili olup olmadığını merak ediyorum. g ++ komut satırında -std = C++ 11 konumu

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 

derleme değil, izlerken:

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 

derliyor nedeni aşağıdaki olmasıdır. Tek değişiklik, -std=c++11 anahtarlarının sonuna taşınmış olmasıdır. Aşağıdaki uyarı verir ++

g:

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. 

Versiyon: - 98/C++ - 03 standart

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

Her zaman -std = ... 'derleyiciye ilk seçenek yaparım ve iyi çalışıyor. – Galik

cevap

7

olarak documentation başına -ansi seçenek C++ sağlar.

Birden çok standart seçeneği belirlerseniz, ikinci seçenek, eskiyi geçersiz kılar. Aynı optimizasyon seviyeleri gibi diğer karşılıklı özel seçenekler için de geçerlidir.