2011-09-07 7 views
5

En C, nous pouvons faire des commentaires de deux façons:Quelle est la meilleure façon d'écrire des commentaires en C?

1>

/* this is one way */ 

2>

// this is 2nd way 

Quelle est la différence entre les deux?
Est-ce que l'un est meilleur que l'autre?

ou

faire les deux ont même impact et aucune différence dans la compilation ou le traitement à toute plate-forme?

Edit: écriture de code particulier pour intégré

+0

Je ne programme pas en C, mais je pense que certains projets open source (tels que la version MRI de l'interpréteur Ruby) ne permettent que la première. Si vous envisagez de contribuer à eux, vous pouvez aussi prendre l'habitude d'ajuster leur préférence. –

Répondre

4

un (peut-être théorique) raison pas utiliser // commentaires est qu'ils ne sont pas pris en charge par C90. Il est vrai que la plupart, peut-être tous les compilateurs C modernes prennent en charge les commentaires //, même s'ils ne prennent pas en charge le reste de C99, mais différents compilateurs prennent en charge différents sous-ensembles de C99.

Tout compilateur prenant en charge le C90 rejettera (ou au moins avertira) les commentaires // si vous l'invoquez dans un mode conforme C90.

Si vous êtes fanatique de la portabilité et que vous voulez vous assurer que votre code sera compilé avec n'importe quel compilateur C, vous devez le compiler en mode conforme C90 - ce qui signifie que // commentaires seront rejetés. Vous pouvez activer les extensions ou partielle (ou même complète) C99 conformité, mais alors vous allez activer d'autres fonctionnalités C99 ainsi - et votre compilateur ne vous avertira pas à propos de autres fonctionnalités spécifiques C99 que vous pourriez utiliser accidentellement. Comme le remarque Andrew Grimm, certains projets pourraient avoir des normes de codage qui exigent une forme ou l'autre. Par exemple, gcc prend en charge les commentaires // et long long (ainsi qu'un certain nombre d'autres fonctionnalités C99); activer // commentaires dans gcc désactive diagnostics pour long long.

Mais dans la plupart des cas, ce n'est probablement pas une raison suffisante pour éviter les commentaires //. Vous pouvez écrire du code raisonnablement portable si vous savez quelles fonctionnalités sont spécifiques à C99, quels compilateurs prennent en charge ces fonctionnalités et quels compilateurs vous souhaitez prendre en charge.

+0

c'est ce que je relaie veux savoir .. j'ai doute que // n'est pas pris en charge dans l'ancienne version de c..thanks –

5

Il suffit d'utiliser si elle est plus pratique et naturel. De brefs commentaires, une poignée de mots, à la fin d'une courte ligne fonctionnent bien avec //. Des commentaires plus longs, répartis sur plusieurs lignes, sont peut-être mieux avec le style classique /* ... */. Peu importe, tout dépend des préférences personnelles et des normes de codage de vos équipes.

Cela ne fait aucune différence pour le processus de compilation.

8

Techniquement, seul le premier moyen est garanti pour fonctionner sur tous les compilateurs, présents et passés. En pratique, tous les compilateurs C implémentés depuis le milieu des années 1980 sont implémentés dans les deux sens, donc à moins que vous n'écriviez pour un compilateur hérité, vous pouvez faire ce qui fonctionne le mieux pour vous ou votre organisation.

+2

Les commentaires de style C++ (//) ont été ajoutés à C dans la norme C99, bien que de nombreux compilateurs les autorisent depuis beaucoup plus longtemps. –

+1

Les commentaires // sont l'une des rares fonctionnalités du langage C99 (hors bibliothèque) prises en charge par MSVC lors de la compilation en mode C. En fait, je me demande si c'est le seul? –

0

Tout comme vous l'avez dit: les deux ont le même impact et aucune différence dans la compilation ou le traitement sur n'importe quelle plate-forme.

0
  1. C'est un moyen de créer facilement des commentaires multilignes
  2. Vous ne pouvez pas commenter par ligne en utilisant cette façon de commenter.

Lequel est le mieux est vraiment une question de préférence personnelle, pour les commentaires couvrant plusieurs lignes, j'utiliserais le premier, mais c'est ma préférence personnelle.

0
/* this is one way */ 

utiliser principalement pour ce bloc de commentaires et

// 

pour une seule ligne.

Comme dans le cas de celui qui est le meilleur.

// 

celui-ci est garanti pour fonctionner sur n'importe quel compilateur.

+0

Non, le 2ème exemple (double barre oblique) ne fonctionnera sur aucun compilateur car il n'a pas été pris en charge à l'origine (comme Wallyk dit dans l'une des autres réponses) – fluffyben

+0

merci pour la correction –

1

Une raison d'utiliser // commentaires pourrait être si vous voulez commenter un plus grand bloc de code qui a des commentaires à l'intérieur. Vous ne pouvez pas faire de commentaires imbriqués avec /* */.

Ce ne compilera pas:

/* 

/*printf("foo");*/ 
printf("bar"); 

*/ 

Mais ceci est ok:

/* 

//printf("foo"); 
printf("bar"); 

*/ 
3

Si vous avez la nécessité de grep un code, vous aurez des avantages avec le commentaire de ligne unique utilisé pour chaque ligne même si vous commentez un bloc (STRG + Shift + 7 dans Eclipse). Le code grepped où votre phrase de recherche a été trouvée est affiché avec //. Le résultat ne peut pas conduire à des malentendus car les commentaires ne sont pas affichés sur plusieurs lignes.

1 #define MY_COUNTER 42 
2 if(MY_COUNTER == index) 
3 { 
4  tempVar = calcSomething(); 
5  doThis(); 
6 // tempVar = MY_COUNTER; 
7  doThat(); 
8 } 

résultat grep:
1 #define MY_COUNTER 42
2 if (MY_COUNTER == index)
6 // tempVar = MY_COUNTER;

Dans le code ci-dessus, vous voyez directement dans le résultat grep (recherchez MY_COUNTER), la ligne 8 est mise en commentaire.

1 #define MY_COUNTER 42 
2 if(MY_COUNTER == index) 
3 { 
4  tempVar = calcSomething(); 
5  doThis(); 
6 /*  
7  tempVar = MY_COUNTER; 
8 */ 
9  doThat(); 
8 } 

Ici, vous ne pouvez pas voir la ligne en commentaire:
1 #define MY_COUNTER 42
2 si (MY_COUNTER == index)
7 tempVar = MY_COUNTER;

Questions connexes