Comment puis-je activer le C++ style des commentaires dans gcc, tout en laissant ANSI-il activé?
C'est juste venu comme une question où j'ai travaillé, j'ai donc fait un peu de creuser et la réponse est un ExpertsExchange un. J'ai donc la main à la question d'origine asker, Manchung:
J'ai un projet écrit en pur C, qui est utilisé dans un système embarqué. Alors, j'utilise pur C pour réduire la taille du code.
Quand je compile le projet, j'ai utiliser l'option-ansi drapeau afin de s'assurer que le code est conforme à la norme ANSI. Cependant, l'inconvénient de l'utilisation de cette balise ansi, c'est que je suis seulement autorisé à utiliser C style de commentaires (/*commentaires */). Ce qui me donne mal à la tête quand j'ai besoin d'imbriquer des commentaires.
Donc, ma question est: est ce que les commutateurs/drapeaux puis-je utiliser pour me permettre d'utiliser le C++ style de commentaires (//commentaires), tout en gardant l'ANSI vérification activée en même temps?
Qui assez bien sommes ma question trop.
- Le haut voté réponse à cette question n'est plus valide. Je serais ravi de voir une solution dans mon cas c'est parce que je suis en train de faire respecter la croix-plate-forme code de compatibilité entre Windows et Linux. Windows nécessite le plus souvent conforme à la norme ANSI code, mais a style c++ commentaires en-têtes système. Et mon Windows les développeurs c++ style des commentaires si je n'ai pas de drapeau comme des mises en garde (et il y a comme une erreur). Activation de c++ commentaires dans GCC semble être la réponse la plus simple.
Vous devez vous connecter pour publier un commentaire.
Sur les versions récentes de gcc,
-ansi
est documenté comme étant le même que-std=c89
. Le nouveau commentaire syntaxe est uniquement disponible avec le standard C99, donc-std=c99
ne le permettrait.Il est également
-std=gnu89
, qui est le même que-std=c89
mais permettant à toutes les extensions de gcc (y compris le C++-style de commentaire de la syntaxe, qui est une extension GNU longtemps avant qu'il a été ajouté à la norme).Aussi regarder la
-pedantic
drapeau, ce qui pourrait vous donner quelques avertissements utiles.Références:
Si vous souhaitez utiliser les commentaires de style C++ simplement parce que vous voulez en commentaire blocs, et avoir des maux de tête sur l'imbrication /* ... */, vous pouvez utiliser cette technique:
qui sera effectivement aussi faire le travail.
#if 0
est à peu près la seule façon dont il à le faire correctement si vous voulez en commentaire code.Vous pouvez utiliser -lang-c-c++-commentaires préprocesseur d'avoir à la fois mode ANSI et C++-style de commentaires.
-lang
option sélectionnée à la fois la langue et les normes de conformité de niveau. Cette option a été supprimée, car elle entre en conflit avec la-l
option." Je ne peux pas trouver un de remplacement.Si vous utilisez
-ansi
seulement pour vérifier la compatibilité, alors le plus simple pourrait être de préparer un script ou un fichier makefile cible qui copie la source complète de l'arbre en "ansi" dossier en application de correctifs à l'écart de la //de commentaires. En pseudo-bash:Si votre CSC prend en charge, cela pourrait aussi être fait un commit-crochet qui construit le code automatiquement sur une machine dédiée en mode ANSI après chaque commit et les mails que vous avez un rapport à ce sujet.
J'ai peur de script en place une sorte de commentaire-réécriture de l'utilitaire (comme Luther Blissett l'indique) pourrait être votre seule option ici. Dans les versions récentes de gcc, il ne semble pas être n'importe quelle sorte de compilateur drapeau ou de la CLI option qui permettra à C++-style de commentaires lors de la
-ansi
ou-std=c89
est utilisé.Vous pourriez être en mesure d'obtenir ce que vous voulez en les abordant sous un angle différent. Vous pourriez être en mesure de compiler avec
-std=c99
et d'utiliser les drapeaux de compilation de désactiver le C99 extensions spécifiques que vous ne voulez pas (sans en savoir plus sur exactement pourquoi vous avez besoin de conformité ANSI, je ne peux pas recommander des indicateurs spécifiques).Vous pourriez construire automatiquement une copie de la source avec les commentaires dépouillé, et de l'utiliser dans votre programme.
E. g. cette semble prometteur
C a a C++ commentaires de style pour près de dix ans maintenant, peut-être que vous devriez mettre à jour?