2010-01-23 4 views
6

J'utilise gcc 4.4.2 sur linuxcompiler avec c89 et c99 gcc 4.4.2 par défaut à c99?

Je me demande si gcc automatiquement par défaut à la compilation avec c99 comme son dernier standard?

Comment puis-je spécifier si je veux compiler avec c89 ou c99?

Un grand merci pour tous les conseils,

+2

La valeur par défaut est toujours gnu89 (c.-à-C89 avec des extensions GNU). –

Répondre

9

L'une des raisons de ne pas utiliser C99 par défaut est parce que cette norme n'est pas entièrement mis en œuvre dans le compilateur encore. Cependant, je crois que vous pouvez définir le mode par défaut lors de la compilation de gcc, donc si le choix des standards est important pour vous, il vaut mieux toujours passer l'option. Les options sont respectivement -std=c99 et -std=c89.

+0

Je compile normalement avec c89 comme son plus portable. Mais il y a quelques caractéristiques de c99 que j'aime. Cependant, je ne peux pas utiliser le standard c99 car j'ai besoin de compiler sur Windows en utilisant VS, qui ne supporte que c89. Même la dernière version de VS 2010 ne mettra pas en application c89. – ant2009

+0

Si je coche [GCC C99status] (https://gcc.gnu.org/c99status.html), je ne trouve aucune fonctionnalité manquante qui affecterait la plupart des cas d'utilisation. Pourriez-vous donner un exemple d'une fonctionnalité manquante qui pourrait bloquer l'utilisation de la compilation C99? –

+0

@RuudAlthuizen Cette réponse a été écrite en 2010. En date de 2016, à ma connaissance, seuls les aspects d'expert du flottant sont manquants. "L'accès à l'environnement à virgule flottante dans " est marqué comme "Fonction de bibliothèque, pas de prise en charge du compilateur requis" mais en fait, ** certainement ** requiert le support du compilateur, que GCC ne fournit pas. –

9

De la page man gcc(1):

-std= 
     Determine the language standard. This option is currently only 
     supported when compiling C or C++. 

.... 

     c99 
     c9x 
     iso9899:1999 
     iso9899:199x 
      ISO C99. Note that this standard is not yet fully supported; 
      see <http://gcc.gnu.org/gcc-4.4/c99status.html> for more 
      information. The names c9x and iso9899:199x are deprecated. 

     gnu89 
      GNU dialect of ISO C90 (including some C99 features). This is 
      the default for C code. 

     gnu99 
     gnu9x 
      GNU dialect of ISO C99. When ISO C99 is fully implemented in 
      GCC, this will become the default. The name gnu9x is 
      deprecated. 
Questions connexes