Forum Programmation.c Compilation avec gcc

Posté par  .
Étiquettes : aucune
0
30
mai
2006
Bonjour
Je compile quelques fichiers à l'aide de gcc mais ce dernier semble ne point trop apprécier les lignes commentées avec //
Avant de modifier tous les fichiers inclus, pouvez vous me dire s'il existe une option de gcc qui évite ce genre de petit tracas?
Je vous remercie beaucoup, vous êtes hyper chouettes
  • # Gcc et commentaire

    Posté par  . Évalué à 1.

    Je suppose que c'est un fichier C que tu compiles.
    Hors les commentaires en C ne peuvent être que de types /* */.
    Alors qu'en C++ ils peuvent être de types comme en C et // ... .
    • [^] # Re: Gcc et commentaire

      Posté par  . Évalué à 1.

      Je vous envoie mille remerciements pour cette réponse habile, probe et tellement rapide.

      Bon, du coup est ce que si j'utilise g++, vous pensez que ça va fonctionner?
      Je vais tenter cette petite folie... oulala

      merci en tout cas
    • [^] # Re: Gcc et commentaire

      Posté par  . Évalué à 3.

      Navré de te contredire, les commentaires // font partie de la norme ISO99 de C.

      Pour qu'ils soient accepter, mettre le switch:
      -std=c99
      lors de l'appel du compilateur.
  • # c99, ansi ou autre ?

    Posté par  (site web personnel) . Évalué à 2.

    Moi j'utilise souvent les commentaires // dans mes sources en C, sans le moindre problème. J'utilise la version 4.0.4 de gcc, mais je n'ai pas souvenir de ce genre d'ennui ces dernières années.

    Peut-être tenter la compilation avec les options "-ansi -std=c99" ? Tiens, d'ailleurs, ces deux options qui traînent dans mes quelques Makefile faits main sont-elles orthogonales ? Je les mets par habitude, il faudrait que je lise la page de manuel...
    • [^] # Re: c99, ansi ou autre ?

      Posté par  . Évalué à 1.

      -std=c99 indique que le source doit être conforme au standard 99, les // sont acceptés par ce standard.

      Mais gcc les acceptait avant, il faut donc avoir un gcc d'avant le déluge ou plutôt avoir mis des options exotiques pour que ce ne soit pas accepté par défaut.
      • [^] # Re: c99, ansi ou autre ?

        Posté par  . Évalué à 0.

        <mode="pinaillage mais pas tant que ça">Il s'agit d'un standard dans un des sens anglais du terme, qui est traduit par norme en français. La langue anglais n'a pas de moyen de différencier directement standard et norme, sinon par des expressions plus longues commes "standard de facto".
        Mais j'admets que l'erreur de traduction est très répandue... Ce qui ne l'excuse pas.</mode>

        Ceci dit, pour en revenir au sujet de la discussion, les commentaire d'une ligne "à la C++" commencés par // ont été effectivement introduits dans la norme C dans la version C99, étant donné que nombre d'implémentations le proposaient déjà comme extension.

        Par ailleurs, gcc propose aussi le mode -std=gnu99 pour disposer de la norme C ISO 99 + les extensions GNU (le "standard" par défaut de GCC étant gnu89, et ce probablement jusqu'à ce que toute la norme C99 soit correctement implémentée, ce qui risque de prendre encore du temps. Patience, cette norme n'est sortie qu'il y a 7 ans, après tout...)
    • [^] # Re: c99, ansi ou autre ?

      Posté par  . Évalué à 0.

      Peut-être tenter la compilation avec les options "-ansi -std=c99" ? Tiens, d'ailleurs, ces deux options qui traînent dans mes quelques Makefile faits main sont-elles orthogonales ? Je les mets par habitude, il faudrait que je lise la page de manuel...
      Ces deux options sont incompatibles. -ansi est un raccourci pour -std=c89, i.e. pour indiquer à gcc de suivre la norme C ANSI 89, qui est identique (à la mise en page près) à C ISO 90 (sans l'amendement 1). -std=c99 indique à gcc de suivre la norme C ISO 99 (plus TC1 et TC2).

      Tu ne dois donc en garder qu'une sur les deux options. Au passage, je n'ai pas trouvé si la doc indiquait quel norme ou standard gcc suit si on en spécifie deux (cf. http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/C-Dialect-Option(...) ). On pourrait faire le test avec un programme invoquant un "silent change", mais je pense que le plus simple est de faire attention à avoir des makefile propres dès le départ, plutôt que de se poser ce genre de questions...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.