Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les options de compilation

Code-blocks + gcc et éventuellement d'autres

    27 octobre 2007 à 2:05:18

    Ce topic a pour but d'expliquer au débutant comment régler son IDE pour que soit activée la production des messages et qu'il sache où et comment les lire. Je vais me contenter pour l'instant d'expliquer comment on fait pour Codeblocks et Devcpp. Très sommairement, j'expliquerai aussi comment on active les avertissements du compilateur pour gcc en ligne de commande sous Linux. Lorsque j'aurai essayé Visual C++ et que j'aurai compris comment ça fonctionne, je complèterai ici.


    En cas d'erreur ou de warning, le numéro de la ligne du fichier d'extension .c responsable du message est précisé. Regarder alors dans le code source la ligne en question et tâcher de rectifier comme il se doit.

    Si vous avez des difficultés

    1) à faire activer les warnings (cela peut arriver)
    2) à interpréter les warnings obtenus

    ne pas hésiter à poster sur le forum du sdz, en donnant des références PRECISES.


    Ce topic est en construction permanente et sans doute assez lente. J'essaye d'incorporer les remarques qui sont faites dans la discussion.


    Avertissements, erreurs indiquées par le compilateur



    Lors du lancement du processus de compilation (et qui en fait se décompose en une succession de taches distinctes, en principe invisibles de l'utilisateur), plusieurs types d'erreurs peuvent survenir, grosso modo :

    type 1 : problème d'installation logicielle d'un composant de l'IDE ou du compilateur,
    type 2 : erreur de compilation pure,
    type 3 : erreur de linker (édition de liens), souvent un problème d'accès à une bibliothèque.

    Les erreurs de type 1 ne concernent pas ce topic. Lorsqu'un programmeur, débutant ou averti, compile un code source C, le compilateur, s'il est réglé convenablement, est capable de l'avertir, par des messages qui s'affichent dans une console ou dans un panneau, de la conformité du code à certaines règles (celles définies par la Norme du langage et d'autres règles). Ces règles seront différentes -- en particulier elles seront plus ou moins contraignantes -- suivant les options que l'on aura passées au compilateur.

    La compilation produit des messages d'erreur (errors) et des avertissements (warnings). S'il y a la moindre erreur, le compilateur n'est pas en mesure de créer un exécutable. Par contre, s'il y a seulement des warnings, un exécutable est créé (sauf si on active une option particulière de compilation, -Werror sur gcc, qui tranforme les warnings en erreurs). On peut donc lancer l'exécution. Mais il est indispensable de s'intéresser aux warnings produits et d'en chercher l'origine dans le code-source.

    La règle de base de tout programmeur sérieux est de faire en sorte d'obtenir une sortie de compilation sans warning, c'est-à-dire :
    0 errors 0 warnings.


    Bien sûr, c'est la conformité à des règles lexicales et syntaxiques qui est vérifiée et pas à des règles sémantiques. Pour imager, si je passe à un compilateur imaginaire de l'Académie française la phrase :

    La raizon du + fort est toujours la meilleur


    le compilateur va tilter à trois endroits :

    1. raizon (problème lexical)
    2. + (problème lexical)
    3. meilleur (problème d'accord du genre, donc problème syntaxique)

    Maintenant, le compilateur ne dit rien concernant le sens : la phrase corrigée a-t-elle un sens ? et si elle a un sens, l'assertion est-elle vraie ?

    Revenons à la programmation en C. Le compilateur ne sait pas ce que vous voulez faire donc une absence de warning ne vous protège pas
    • d'une erreur pendant l'exécution (votre programme plante parce que vous avez écrit dans une zone de mémoire interdite, vous avez divisé par 0, etc)
    • d'une non-conformité des résultats attendus (par exemple vous demandez si 2007 est pair et le programme vous dit oui)





    Réglage de gcc sous Code-Blocks



    Je me rappelle quand j'ai fait cela pour la première fois, je n'étais pas très sûr de moi et je trouvais cela assez mystérieux.

    Il faut savoir que pour bénéficier de la production de warnings, il faut créer un projet (menu File > New > project etc). Il me semble que c'est impossible pour un fichier toto.c seul.

    Ci-dessous sont traités les cas de Codeblocks en Nightly-Builds sous Linux et de Codeblocks en version 1 RC2 sous Windows XP. Quel que soit l'OS (y compris Vista), le principe est sensiblement le même : on va dans le menu adéquat, on coche des cases et on valide les changements.

    Ce qui suit suppose que le compilateur installé est celui par défaut, à savoir gcc (je n'ai rien essayé d'autre pour l'instant).

    Codeblocks en Nightly-Builds sous Linux


    Ce que je décris ci-dessous s'applique à une version Nightly Builds (mai 2007) de Code-Blocks pour Linux.


    Ouvrir codeblocks. Cliquer sur Menu Settings > Compiler and debugger...
    Une fenêtre doit s'ouvrir, et par défaut, l'onglet "Compiler Flags" doit être activé. Il y a en dessous une liste de cases à cocher. Je conseille de cocher celles-ci :

    • [x] Enable all compiler warnings (overrides every other setting)[-Wall]
    • [x] Enable standard compiler warnings [-W]
    • [x] Enable warnings demanded by strict ISO C ans ISO C++ [-pedantic]




    Codeblocks en version 1 RC2 sous Windows



    Allez au menu Settings > Compiler et dans l'onglet qui
    s'ouvre, normalement avec le titre Global Compiler settings,
    (a) désactivez toutes les cases à cocher
    (b) activez les cases aux lignes 3 et 4, à savoir :
    i. Enable all compiler warning [-Wall]
    ii. Enable standard compiler warning [-W]
    (c) valider par OK.

    Si codeblocks vous demande de sauvegarder le Workspace, répondre OUI.
    Ne pas activer sous Windows l'option -pedantic qui génère des warnings dont vous n'êtes pas responsable.
    Voilà pour Windows et la 1RC2.


    Si on utilise un débogueur, il faut activer la première ligne :
    [x] Produce debugging symbols [-g]

    Pour avoir du code exécutable optimisé (grosso modo, l'exécution est plus rapide, c'est par exemple ce qu'utilise le serveur de france-ioi), activer l'option :
    [x] Optimise fully for speed [-O2]

    Personnellement, je n'utilise rien d'autre.


    Les messages du compilateur



    Pour lire les messages d'avertissement (warnings) ou d'erreur (error), il faut ouvrir un panneau (menu ou touche F2).

    L'onglet "Build messages" doit être activé. Ouvrir un projet, le compiler, par exemple avec la combinaison de touches CTRL+F9, et ensuite lire les messages du compilateur dans la fenêtre "Build messages".

    Pour capturer ces messages et pouvoir par exemple les rapporter dans un message sur ce forum, cliquer droit dans le panneau "Build messages" et activer la ligne du menu contextuel énonçant :
    Copy all messages to Clipboard

    ce qui permet de faire un copier-coller des messages.

    Réglage du compilateur sous Dev-C++


    Cet IDE fonctionne en principe exclusivement sous Windows (toutes versions, y compris Vista) et uniquement avec le compilateur gcc pour Windows (MinGw).

    Ouvrir L'IDE. Aller menu Tools > Compiler Options > Onglet Compiler, cocher la case Add the following commands when calling compiler
    et dans la zone de texte, coller les options suivantes :

    -W -Wall


    Valider par "OK".

    Pour lire les messages du compilateur :
    • compiler (CTRL+F9 ou mieux CTRL+F11)
    • Si les messages n'apparaissent pas, ouvrir tout en bas l'onglet "Compiler".
    • Pour capturer les messages, cliquer-droit sur une ligne et valider "Copy" (ce qui ne permet que de copier la ligne sélectionnée).




    Compilation en console avec gcc sous Linux



    Dans une ligne de commande (en principe en ouvrant une console), se placer dans le répertoire où se trouve le fichier source, qui dans l'exemple s'appelera toto.c . L'exécutable créé portera le nom de exe_toto. Voici un exemple :


    gcc -Wextra -Wall -pedantic -o exe_toto toto.c


    Ici, le degré de sévérité des avertissements est déterminé par les trois options -Wextra -Wall -pedantic. L'option -Wall signifie "Warning all", c'est un minimum de sévérité. On peut être encore plus sévère en ajoutant -Wextra. L'option -pedantic oblige à se conformer strictement au standard C90 (y compris des "détails" comme les commentaires à la C++ ou le placement des déclarations de variables après des instructions exécutables). Parfois ces options de compilation engendrent une avalanche de warnings, qui peuvent ne pas tous être justifiés. Je compléterai en étant plus précis dès que j'aurai le temps de me pencher dessus.

    Compléments



    Voir aussi la page de -ed- et en particulier la ligne marquée Reglages dans Code::Blocks :



    N.B. Ce message trouve son origine dans une réponse au message suivant :


    EDIT Remise en forme, ajouts, orthographe
    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2008 à 16:50:52

      Une question: à quoi bon mettre -W ET -Wall ?

      -Wall seul fait la même chose puisque cette option active tous les avertissements du compilateur, non?

      En tout cas, pour la ligne de commande, je trouve ces options suffisantes:

      gcc -Wall -ansi -pedantic [-g]

      Personnellement, je ne me sers jamais de -g, mais ça peut être utile à ceux qui se servent du "debugger".

      P.S.: Désolé de squatter ton topic candide :p .

      Cordialement,
      Vhann.
      • Partager sur Facebook
      • Partager sur Twitter
        16 juin 2008 à 17:00:18

        Sinon je profite de ce topic, pour parler d'un problème que j'ai avec la librairie graphique Allegro. A chaque compilation, il me fais des warnings :

        Warning <instruction spéciale de alelgro> is deprecated


        Par exemple :
        jeu.cpp:194: attention : ‘textprintf’ is deprecated (declared at /usr/local/include/allegro/alcompat.h:177)


        Si quelqu'un pouvait me dire à quoi ça correspond :)

        Edit : et pour gcc il suffit juste de rajouter -W -Wall après le -o me semble t-il (c'est ce que je fais).
        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2008 à 17:03:35

          @yetimothee: Ce topic n'est visiblement pas l'endroit pour poster ce genre de questions (mais bon, fallait s'y attendre...)

          De plus, c'est très simple, on te dit que l'instruction est "deprecated" c'est-à-dire dépréciée, obsolète.

          EDIT: @yetimothee ci-bas (question de pas "re-up" le topic): aucun rapport avec candide, c'est juste pas l'endroit (si ça continue, on va se retrouver avec des zolis posts de débutants: "j'ai pas compris comment faire/la manipulation n'est pas strictement identique sur ma version/autre problème quelconque plutôt que d'ouvrir un nouveau topic").
          • Partager sur Facebook
          • Partager sur Twitter
            16 juin 2008 à 17:06:19

            Merci tout de même :)
            (oui, je suis méchant, j'ai pollué le topic de candide :/ )
            • Partager sur Facebook
            • Partager sur Twitter
              16 juin 2008 à 18:29:47

              Citation : yetimothee

              Merci tout de même :)
              (oui, je suis méchant, j'ai pollué le topic de candide :/ )



              Citation : Vhann


              P.S.: Désolé de squatter ton topic candide :p .



              Non ! vous ne le polluez pas, vous le refaites vivre ;)

              Citation : Vhann

              Une question: à quoi bon mettre -W ET -Wall ?

              -Wall seul fait la même chose puisque cette option active tous les avertissements du compilateur, non?


              Je suis content que tu poses cette question. J'ai aussi pensé comme toi et nous avons tous les deux été abusés par la terminologie inconséquente de gcc. En effet, Wall signifie "Warning all" mais dans le langage gcc all ça veut dire tous sauf .... La rédaction de la doc de gcc est d'ailleurs assez sidérante :


              Citation : Manuel gcc

              -Wall All of the above ‘-W’ options combined. This enables all the warnings about
              constructions that some users consider questionable, and that are easy to avoid
              (or modify to prevent the warning), even in conjunction with macros. This
              also enables some language-specific warnings described in Section 3.5 [C++ Dialect
              Options], page 24 and Section 3.6 [Objective-C and Objective-C++ Dialect
              Options], page 31.
              The following ‘-W...’ options are not implied by ‘-Wall’.



              En réalité, l'option -W est obsolète, il faudrait employer -Wextra .


              Citation : Vhann


              En tout cas, pour la ligne de commande, je trouve ces options suffisantes:

              gcc -Wall -ansi -pedantic [-g]


              Hum,certains vont te traiter de laxiste ou dire que tu vis dangereusement ;)

              Mon choix d'options n'est pas mien en fait, c'est un de ceux que recommandent les piliers de clc, je prends pas de risque ;)

              • Partager sur Facebook
              • Partager sur Twitter
                16 juin 2008 à 18:42:27

                Citation : Candide

                Par contre, s'il y a seulement des warnings, un exécutable est créé (sauf je crois si on active une option particulière de compilation)



                -Werror avec gcc. Ça transforme les warnings en erreurs. À combiner avec un niveau de warnings bien élevé pour avoir du code bien propre ^^ .
                • Partager sur Facebook
                • Partager sur Twitter
                J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                  16 juin 2008 à 18:45:17

                  Salut,
                  je me permet de poster ce lien un peu obsolète maintenant, mais qui reste assez intéressant : http://vodka-pomme.net/projects/avertissements-de-gcc
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juin 2008 à 18:53:14

                    Citation : Candide

                    l'expliquerai pour gcc en ligne de commande sous Linux et lorsque,



                    Sous GNU/Linux en ligne de commande/avec un makefile



                    Ajoutez à la fin de votre commande de compilation les options :

                    -W -Wall -pendatic

                    Pour une ligne de commande, ça va donner quelque chose genre :

                    $ gcc fichier.c -o fichier.o -W -Wall -pendatic


                    Ou, dans un makefile :

                    %.o : %.c
                        gcc -c $< -o $@ -W -Wall -pendatic


                    De la même façon, vous pouvez utiliser l'option -g pour ajouter les symboles de débogage. Vous pouvez sinon utiliser -O2 pour optimiser votre exécutable (pas les deux, par contre).
                    • Partager sur Facebook
                    • Partager sur Twitter
                    J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                      16 juin 2008 à 19:23:58

                      Citation : candide

                      Je suis content que tu poses cette question. J'ai aussi pensé comme toi et nous avons tous les deux été abusés par la terminologie inconséquente de gcc. En effet, Wall signifie "Warning all" mais dans le langage gcc all ça veut dire tous sauf .... La rédaction de la doc de gcc est d'ailleurs assez sidérante :


                      Citation : Manuel gcc

                      -Wall All of the above ‘-W’ options combined. This enables all the warnings about
                      constructions that some users consider questionable, and that are easy to avoid
                      (or modify to prevent the warning), even in conjunction with macros. This
                      also enables some language-specific warnings described in Section 3.5 [C++ Dialect
                      Options], page 24 and Section 3.6 [Objective-C and Objective-C++ Dialect
                      Options], page 31.
                      The following ‘-W...’ options are not implied by ‘-Wall’.



                      En réalité, l'option -W est obsolète, il faudrait employer -Wextra .


                      :waw: . Dans ce cas, j'ajoute -Wextra à ma ligne de compilation ^^ .

                      Citation : candide


                      Citation : Vhann


                      En tout cas, pour la ligne de commande, je trouve ces options suffisantes:

                      gcc -Wall -ansi -pedantic [-g]


                      Hum,certains vont te traiter de laxiste ou dire que tu vis dangereusement ;)



                      Et si j'ajoute -Wextra comme dit plus haut est-ce que c'est ok? Parce que je ne vois pas vraiment ce que mes options ont de laxiste sinon?

                      Cordialement,
                      Vhann.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 juin 2008 à 13:24:05

                        Par contre pour ceux qui utilisent la SDL, sous devcpp, j'ai constaté un warning à ne pas corriger, lol.

                        Dans le main(argc, argv), il me faisait un warning parce que je n'utilisais pas ces variables, mais elles sont pourtant nécessaire au fonctionnement de la SDL (erreur de compilation si on ne les met pas). Donc c'est bien de faire des programmes avec 0 warning, mais il y en a qui sont "normaux" et qu'il faut tout de même laisser (ou ajouter un if(argv && argc);, lol).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 juin 2008 à 14:18:10

                          Citation : moi281184

                          Par contre pour ceux qui utilisent la SDL, sous devcpp, j'ai constaté un warning à ne pas corriger, lol.

                          Dans le main(argc, argv), il me faisait un warning parce que je n'utilisais pas ces variables, mais elles sont pourtant nécessaire au fonctionnement de la SDL (erreur de compilation si on ne les met pas). Donc c'est bien de faire des programmes avec 0 warning, mais il y en a qui sont "normaux" et qu'il faut tout de même laisser (ou ajouter un if(argv && argc);, lol).



                          Habituellement, lorsque des arguments inutilisés sont imposés, il est d'usage de procéder comme suit:

                          int main(int argc, char **argv)
                          {
                              SDL_Init(SDL_INIT_VIDEO);
                              
                              /*...*/
                          
                              SDL_Quit();
                          
                              /* unused */
                              (void) argc;
                              (void) argv;
                          
                              return EXIT_SUCCESS;
                          }
                          


                          Thierry
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 juin 2008 à 14:32:30

                            Citation : GuilOooo

                            Citation : Candide

                            l'expliquerai pour gcc en ligne de commande sous Linux et lorsque,



                            Sous GNU/Linux en ligne de commande/avec un makefile



                            Ajoutez à la fin de votre commande de compilation les options :

                            -W -Wall -pendatic

                            Pour une ligne de commande, ça va donner quelque chose genre :

                            $ gcc fichier.c -o fichier.o -W -Wall -pendatic





                            Il y a une coquille, c'est pedantic et non pendatic. Quand j'aurai le temps, je rajouterai un paragraphe pour la compilation en console avec gcc. Je voudrais aussi le compléter en décrivant un minimum les options de compilation (histoire que les débutants sachent un minimum ce qu'ils font), pour l'instant j'ai pas trop le temps. En plus, il faudrait expliquer les quelques petits problèmes qu'on peut rencontrer avec certaines options comme pedantic.

                            Citation : GuilOooo


                            -Werror avec gcc. Ça transforme les warnings en erreurs.



                            J'avoue ne pas trop comprendre l'intérêt puisque de toute façon un programmeur sérieux doit parvenir à 0 warning.

                            Citation : GuilOooo


                            De la même façon, vous pouvez utiliser l'option -g pour ajouter les symboles de débogage.


                            Ça on peut le signaler effectivement. Mais ce qui manque beaucoup, c'est un tuto solide sur comment déboguer ?, moi j'ai beaucoup galéré à apprendre (au bout du compte, pas trop le choix, faut se taper la doc de gdb)

                            Citation : GuilOooo


                            Vous pouvez aussi utiliser -O2 pour optimiser votre exécutable.


                            [En principe, on ne conjugue pas débogage et optimisation.] Il faudrait effectivement en parler, une optimisation -O2 peut considérablement accélérer le code (très utile quand on fait des algorithmes, essentiellement ce que je fais).


                            Citation : GuilOooo


                            Sinon, pourquoi ne pas parler de -Wextra (Warnings en plus)


                            Pareil que -W.

                            Citation : GuilOooo


                            et de -s (enlève les symboles de l'exécutable : gain en place, perte d'infos de débogage entre autres) ?


                            Je connaissais pas, j'ai regardé dans la doc de gcc, ça me semble quand même pas assez marginal, mais c'est sans doute utile en production (ce que je distingue bien de l'apprentissage).

                            Citation : Vhann


                            Et si j'ajoute -Wextra comme dit plus haut est-ce que c'est ok? Parce que je ne vois pas vraiment ce que mes options ont de laxiste sinon?


                            Moi non plus d'ailleurs, je n'ai fait que rapporter à peu près ce que certains considèrent...

                            Citation : moi281184


                            Dans le main(argc, argv), il me faisait un warning parce que je n'utilisais pas ces variables, mais elles sont pourtant nécessaire au fonctionnement de la SDL (erreur de compilation si on ne les met pas).




                            Tout à fait exact, j'ai aussi constaté ce warning, je n'en connais pas l'origine. Ce que je peux dire c'est que sous Linux, la SDL ne présente pas ce warning, c'est sous Windows que je l'ai eu. C'est pas très grave, l'essentiel étant simplement quand d'avoir conscience de l'origine du warning.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 juin 2008 à 14:36:37

                              Citation : candide

                              Mais ce qui manque beaucoup, c'est un tuto solide sur comment déboguer ?


                              Il y a un tuto qui a été publié récemment, l'as-tu vu ?
                              http://www.siteduzero.com/tuto-3-29037 [...] avec-gdb.html
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 juin 2008 à 14:45:37

                                Citation : candide


                                Tout à fait exact, j'ai aussi constaté ce warning, je n'en connais pas l'origine. Ce que je peux dire c'est que sous Linux, la SDL ne présente pas ce warning, c'est sous Windows que je l'ai eu. C'est pas très grave, l'essentiel étant simplement quand d'avoir conscience de l'origine du warning.



                                Parce que sous Windows, le fonctionnement de la SDL est particulier. On a quelque chose comme:
                                #define main SDL_main
                                


                                Ensuite, le runtime de la SDL définit une fonction WinMain() qui appelle SDL_main(), cette dernière fonction devant avoir le prototype:

                                int SDL_main(int argc, char **argv);
                                


                                Sous Linux, les choses se passent différemment. C'est pour cette raison que tu est obligé de définir main() avec les arguments argc et argv sous Windows. Ainsi, si argc et argv ne sont pas utilisés et que le drapeau -Wunused-parameter est activé (c'est le cas lorsqu'on compile avec -Wall et -Wextra), on obtient un avertissement, sous Windows comme sous Linux d'ailleurs.

                                Thierry
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 juin 2008 à 16:01:06

                                  Citation : tc


                                  /* unused */
                                      (void) argc;
                                      (void) argv;
                                  



                                  Effectivement (si on ne peut pas faire autrement).

                                  Citation : freecircus


                                  Il y a un tuto qui a été publié récemment, l'as-tu vu ?
                                  http://www.siteduzero.com/tuto-3-29037 [...] avec-gdb.html



                                  Non je l'ignorais, merci de me l'avoir signalé.

                                  Citation : tc


                                  Sous Linux, les choses se passent différemment. C'est pour cette raison que tu est obligé de définir main() avec les arguments argc et argv sous Windows.



                                  Merci de ces explications.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 juin 2008 à 16:30:52

                                    Citation : Candide

                                    [En principe, on ne conjugue pas débogage et optimisation.]



                                    Oui je sais. Il ne faudrait pas utiliser -g et -O2 en même temps, c'est contradictoire. J'édite mon post pour que ça soit plus clair (les deux sont indépendants).

                                    C'était juste pour faire la partie sur Linux et la ligne de commande pour que tu l'ajoutes au premier post si ça te chante (en le modifiant comme tu veux).
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
                                      17 juin 2008 à 18:55:55

                                      Citation : candide


                                      [En principe, on ne conjugue pas débogage et optimisation.] Il faudrait effectivement en parler, une optimisation -O2 peut considérablement accélérer le code (très utile quand on fait des algorithmes, essentiellement ce que je fais).



                                      Oui et non. Certains avertissement ne sont activés que à partir de -O2. C'est la raison pour laquelle je conseille d'utiliser ce niveau. Lorsqu'on désire débugger avec gdb, il est effectivement conseillé de repasser à un niveau -O0, mais le reste du temps -O2 me semble approprié.

                                      Thierry
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 juin 2008 à 19:16:42

                                        Citation : tc


                                        Oui et non. Certains avertissement ne sont activés que à partir de -O2.


                                        C'est la première fois que j'entends parler de cela alors je ne suis pas sûr de comprendre : recommandes-tu de compiler avec l'option -O2 systématiquement activée (sauf en mode débogage) ? À quels avertissements songes-tu ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 juin 2008 à 19:37:18

                                          Citation : candide

                                          Citation : tc


                                          Oui et non. Certains avertissement ne sont activés que à partir de -O2.


                                          C'est la première fois que j'entends parler de cela alors je ne suis pas sûr de comprendre : recommandes-tu de compiler avec l'option -O2 systématiquement activée (sauf en mode débogage) ? À quels avertissements songes-tu ?



                                          J'ai pas retrouver l'info qui mentionnait ceci. Mais la doc de gcc indique par exemple que -Wuninitialized n'est activé que à partir de -O1 et plus élevé. Compiler avec -O2 me semble une option raisonable et c'est ce que pratiquement tout le monde fait.

                                          Thierry
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Les options de compilation

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown