54 votes

Quelle est la différence entre GNU99 et C99 (Clang) ?

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)

43voto

Matt Joiner Points 29194

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

18voto

Paul R Points 104036

C99 est du C99 pur, GNU99 est du C99 avec des extensions gnu. Voir le Page de manuel du GCC .

13voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X