J'ai vu l'option de compilateur GNU99 et C99. Quelle est la différence entre les deux ? Une documentation détaillée ? (Clang, Xcode, Mac OS X)
Réponses
Trop de publicités?Différences entre les différents modes standard
clang supporte l'option -std, qui change le mode de langage que clang utilise. Les modes supportés pour C sont c89, gnu89, c94, c99, gnu99 et divers alias pour ces modes. Si aucune option -std n'est spécifiée, clang utilise par défaut le mode gnu99.
Différences entre tous les modes c* et gnu* :
- c* modes définir
__STRICT_ANSI__
.- Les définitions spécifiques à la cible qui ne sont pas préfixées par des caractères de soulignement, comme "linux", sont définies dans les modes gnu*.
- Les trigraphes sont désactivés par défaut dans les modes gnu* ; ils peuvent être activés par la commande
-trigraphs
option.- L'analyseur syntaxique reconnaît "asm" et "typeof" comme des mots-clés dans les modes gnu* ; les variantes
__asm__
y__typeof__
sont reconnus dans tous les modes.- L'extension Apple "blocks" est reconnue par défaut dans les modes gnu* sur certaines plates-formes ; elle peut être activée dans n'importe quel mode avec la commande
-fblocks
option.
Plus de liens
C99 est du C99 pur, GNU99 est du C99 avec des extensions gnu. Voir le Page de manuel du GCC .
C99 est simplement la version de la norme C de 1999 telle que nous la connaissons tous. Dans GCC, elle n'est pas entièrement supportée.
GNU99 est une extension de C99, tout comme GNU98 est une extension de C98. Dans la documentation :
ISO C99 plus extensions GNU. Lorsque ISO C99 sera entièrement implémenté dans GCC, cela deviendra la valeur par défaut. Le nom gnu9x est déprécié.
Clang supporte également ces extensions.