web-dev-qa-db-fra.com

Comment activer c11 sur les versions ultérieures de gcc?

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++.)

36
Paul Baltescu

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.

55
ouah

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

3
KeshV

gcc 5.2.0 fonctionne avec l'option de ligne de commande ‘-std = c11’

3
Janos

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