2013-04-27 13 views
26

Obecnie używam gcc 4.6.3. Rozumiem, że domyślnie gcc używa standardu gnu89 i chciałbym włączyć C11, najnowszy standard C. Próbowałem:Jak włączyć c11 w nowszych wersjach gcc?

[[email protected] test ]$ gcc -std=c11 -o test test.c 
cc1: error: unrecognised command line option ‘-std=c11’ 

Wymieniłem c11 z gnu11 i uzyskać ten sam błąd. Jaki jest poprawny sposób włączenia najnowszego standardu C dla gcc?

:

+0

Jeśli jesteś zainteresowany otwieraniem działającego gcc, który wprowadza wiele interesujących bitów C11, spójrz na P99, p99.gforge.inria.fr –

Odpowiedz

44

-std=c11 opcja jest poprawna, ale nie jest dostępny w gcc 4.6 (Uwaga Jestem zainteresowany w najnowszym standardzie C i nie najnowszej C++ jednym.).

Potrzebujesz co najmniej gcc 4.7, aby ta opcja była obsługiwana. W niektórych starszych wersjach, takich jak gcc 4.6, dostępna była opcja -std=c1x z eksperymentalną (tj. Bardzo ograniczoną) obsługą C11.

Należy również pamiętać, że bieżąca wersja gcc to gcc 4.8.0.

+1

poprawną odpowiedź, ale z mojego doświadczenia wynika, że ​​'- std = c11' jeszcze nie działa, bądź ostrożny. W gcc brakuje niektórych elementów C11, więc nie jest (jeszcze) łatwo pracować z C11 i gcc. –

+1

4.8.1 został właśnie wydany http://gcc.gnu.org/ml/gcc-announce/2013/msg00004.html z pełną obsługą – bluszcz

+3

@bluszcz To mówi o g ++ i C++ 11, czy to samo dotyczy gcc i C11? – complistic

1

Po prostu informujemy, że GCC 4.9.x ma znacznie bardziej kompletne wsparcie niż starsze wersje. Jeśli naprawdę potrzebujesz, aby korzystać z tej funkcji, należy przełączyć się do niczego 4.8+ Oto stan wsparcie - https://gcc.gnu.org/wiki/C11Status

0

Wewnątrz .spec pliku:

%define gcc_ver %(if [[ $(gcc -dumpversion) > 4.7 ]]; then echo 1; else echo 0; fi) 
# Do we use c11 ? 
%if 0%{?gcc_ver} < 1 
    %global std_c11 0 
%else 
    %global std_c11 1 
%endif 

# if the configure of the package supports it add : 
%if %{std_c11} 
    --enable-cxx11 \ 
%endif 
+3

Podczas gdy ten kod może odpowiedzieć na pytanie, podając dodatkowy kontekst dotyczący _why_ i/lub _how_ to odpowiada pytanie znacznie poprawiłoby jego długoterminową wartość . Proszę [edytuj] swoją odpowiedź, aby dodać wyjaśnienie. –

2

gcc 5.2.0 działa z opcją wiersza poleceń "-std = c11"

Powiązane problemy