it-swarm.com.de

Wie kann ich c11 in späteren Versionen von gcc aktivieren?

Ich benutze derzeit gcc 4.6.3. Meines Wissens nach verwendet gcc standardmäßig gnu89 Standard und ich möchte C11, den neuesten C-Standard, aktivieren. Ich habe es versucht:

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

Ich ersetzte c11 mit gnu11 und ich bekomme den gleichen Fehler. Was ist der richtige Weg, um den neuesten C-Standard für gcc zu aktivieren?

(Hinweis: Ich interessiere mich für den neuesten C-Standard und nicht für den neuesten C++ - Standard.)

36
Paul Baltescu

Die richtige Option ist -std=c11.

Es ist jedoch nicht in gcc 4.6 Verfügbar. Sie benötigen mindestens gcc 4.7, Um diese Option zu unterstützen. In einigen älteren Versionen wie gcc 4.6 War die Option -std=c1x Mit experimenteller (d. H. Sehr begrenzter) Unterstützung von C11 verfügbar.

Beachten Sie, dass die aktuelle Version von gccgcc 8.2 Ist.

55
ouah

Nur um Ihnen mitzuteilen, dass GCC 4.9.x eine weitaus umfassendere Unterstützung bietet als ältere Versionen. Wenn Sie diese Funktion wirklich benötigen, wechseln Sie zu 4.8+. Hier ist der Support-Status - https://gcc.gnu.org/wiki/C11Status

3
KeshV

gcc 5.2.0 funktioniert mit der Befehlszeilenoption "-std = c11"

3
Janos

In einer .spec-Datei:

%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
1
rmstock