J'ai lu ici c'est C90 avec des extensions. Comment puis-je savoir avec certitude? P>
5 Réponses :
Utilisez le drapeau en tant que raccourci Utiliser Les valeurs par défaut sont -std = code> pour spécifier une dialecte de langue:
C89 code>,
C99 code>,
c ++ 98 code >, etc. Notez que
C90 code> est équivalent à
C89 code>. P>
--ansi code> causes
-std = c89 code> en mode C et
-std = c ++ 98 code> en mode C ++. < / p>
-pedantic code> pour activer tous les diagnostics requis par les normes. P>
gnu89 code> pour c et
gnu ++ 98 code> pour C ++. Consultez le manuel pour une description détaillée des différents dialectes. P>
Lequel d'entre eux est la valeur par défaut? Y a-t-il une option dans GCC qui me dit voir la version par défaut?
@Bruce: ajouté! Notez que la valeur par défaut C ++ peut modifier finalement :-)
Qu'entendez-vous par exemple par C mode C i> et C ++ mode i>? Récemment, j'ai lu que GCC 4.8 vise à passer au mode C ++ par défaut . Qu'est-ce que ça veut dire?
@Kerreksb: Si vous savez, répondez à ma question posée dans mon précédent commentaire. Je veux le savoir, à la volée, sans créer un sujet dessus. :RÉ
@Nawaz: C'est quelque chose de complètement différent - cela fait référence à la manière dont GCC elle-même est construite. Il y a eu une option pour la construire comme C ++ pendant une longue période, mais il a toujours été "expérimental".
@Kerreksb: Qu'est-ce que "le construit comme c ++" i> signifie dans ce contexte? Par "Build", je comprends la compilation, la résolution et la création de code de machine (DLL / EXE / LIB / etc.), mais "Construire comme C ++" i> n'a pas de sens pour moi , d'où la confusion. Voulez-vous dire "programme / code in c ++" i>?
@Nawaz: Cela signifie que le compilateur lui-même sera compilé avec g ++, pas avec GCC. Je suppose que cela signifie que le code source du compilateur est traité comme C ++. Cela a-t-il du sens?
Cette réponse est maintenant obsolète. La version 5.0 modifiée par défaut sur -std = C11 code>. Voir Ma réponse .
Lire le manuel. Sur mon ordinateur (OSX 10.7, GCC Version 4.2.1 (Basé sur Apple Inc. Build 5658) (Build LLVM 2335.15.00)): P>
-std =
Déterminer la norme linguistique. Cette option est actuellement uniquement prise en charge de
lors de la compilation C ou C ++. P>Une valeur pour cette option doit être fournie; Les valeurs possibles sont p>
.... p>
gnu89
Par défaut, ISO C90 Plus Extensions GNU (y compris certaines fonctionnalités C99). P>.... p>
gnu ++ 98
Les mêmes que -std = c ++ 98 plus des extensions GNU. Ceci est la valeur par défaut du code C ++. P> blockQuote>
Travaille pour GCC pour moi mais pas pour Clang.
UMMM Man GCC CODE> dit qu'il n'y a pas de page d'homme pour GCC. Wat?
Je préférerais obtenir ces informations du compilateur lui-même au cas où nous travaillons avec plusieurs cuillères à outils et Manpath n'est pas définie pour le compilateur dans le chemin.
Vous pouvez également consulter l'un des prédéfini Macros , par exemple si votre GCC demande à ANSI C (
Aucune version de GCC n'est parfaitement conforme à toute norme ANSI / ISO par défaut.
Essayez ci-dessous la commande et recherchez Il vous montrera toutes les options disponibles pour votre GCC. P> P> std code>
Mais pas quelle option est utilisée par défaut.
Sur un système de type UNIX, cela extraire uniquement les bits pertinents de GCC: GCC -V --Help 2> / dev / null | Grep 'conforme. * C standard' code>
Aucune version de GCC n'est entièrement conforme à la norme ANSI ou ISO C par défaut. La valeur par défaut est toujours équivalente à Il y a eu trois normes ISO C: C90, C99 et C11. (C95 était un amendement mineur à C90.) La première norme ANSI C a été publiée en 1989 et est connue sous le nom de C89; Il décrit la même langue que la norme ISO C90. P> Pour découvrir la version de langue par défaut pour le GCC, vous avez en cours d'exécution, tapez p> Rechercher la phrase "la valeur par défaut". p> Ceci suppose que vous avez la documentation GCC installée, que la documentation indiquée par plus fiable, exécutez p> pour voir quelle version vous utilisez, puis visitez le Documentation en ligne GCC et lisez la documentation de la version que vous utilisez. P> Plus simplement, Si vous avez une version avant 5.0, la valeur par défaut est ou vous pouvez éviter la question en spécifiant la version que vous souhaitez utiliser l'option -std = gnunn code>, en soutenant la norme donnée avec des extensions spécifiques à GNU. Avant la version 5 (et revenir de plusieurs années), la valeur par défaut était
-std = gnu90 code>. À partir de la version 5, la valeur par défaut est
-std = gnu11 code>.
info gcc code> correspond à la version de GCC que vous utilisez et que Le libellé est suffisamment similaire que la recherche de "la valeur par défaut" trouvera les informations correctes. Aucun de ceux-ci n'est garanti. Les manuels plus anciens de la GCC peuvent être organisés différemment. P>
-std = gnu89 code>; Sinon, la valeur par défaut est
-std = gnu11 code>. (Cela peut changer dans une version future, mais seulement un peu de temps après la publication d'une nouvelle norme ISO C et que les responsables de la GCC ont eu le temps de la mettre en œuvre et de décider de le faire par défaut. Ne tenez pas votre souffle.) P >
-std = ... code> option de ligne de commande. p> p> p>