J'utilise actuellement gcc 4.6.3
. Ma compréhension est que gcc
utilise par défaut le gnu89
standard et je voudrais activer C11, la dernière norme C. J'ai essayé:
[pauldb@pauldb-laptop test ]$ gcc -std=c11 -o test test.c
cc1: error: unrecognised command line option ‘-std=c11’
J'ai remplacé c11
avec gnu11
et j'obtiens la même erreur. Quelle est la bonne façon d'activer la dernière norme C pour gcc?
(Remarque: je suis intéressé par la dernière norme C et non par la dernière version C++.)
L'option correcte est -std=c11
.
Cependant, il n'est pas disponible dans gcc 4.6
. Vous avez besoin d'au moins gcc 4.7
pour que cette option soit prise en charge. Dans certaines anciennes versions comme gcc 4.6
, l'option -std=c1x
était disponible avec un support expérimental (c'est-à-dire très limité) de C11.
Notez que la version actuelle de gcc
est gcc 8.2
.
Juste pour vous faire savoir que GCC 4.9.x a un support beaucoup plus complet que les anciennes versions. Si vous avez vraiment besoin d'utiliser cette fonctionnalité, veuillez passer à n'importe quoi 4.8+ Voici l'état du support - https://gcc.gnu.org/wiki/C11Status
gcc 5.2.0 fonctionne avec l'option de ligne de commande ‘-std = c11’
Dans un fichier .spec:
%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