Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code Block compile indéfiniement

Ça me saoûle !!!!

    16 février 2020 à 20:19:06

    Bonjour, je suis actuellement à bout.

    Pour coder, j'utilise l'IDE Code Block mais ce dernier rencontre un problème de compilation. Je décide donc d'arrêter Code Block.

    Voyez plutôt :

     

    Je sélectionne "Non".

    Mais cela doit faire maintenant 20 minutes qu'il compile et je ne peux même pas utiliser le bouton "Abort" pour arrêter la compilation car celui-ci ne répond pas ! 

    J'ai essayé de regarder le gestionnaire de tâche mais rien ne semble anormale.

    Je suis donc à chaque fois obligé d'arrêter Code Block et de le relancer pour reprogrammer normalement. Mais à force ça devient vraiment pénible.

    Ma question est donc la suivante. Comment stopper une compilation de force ?

    Si quelqu'un a la solution, je lui en serai très reconnaissant.

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2020 à 21:22:17

      Lu'

      Les outils de compilation sont-ils installés correctement ? Les quels sont installés ?

      Cela te fait-il la même chose avec un autre projet ?

      • Partager sur Facebook
      • Partager sur Twitter
        17 février 2020 à 12:16:03

        Bonjour PokiCode.

        Où puis-je vérifier l'installation des outils de compilation ?

        Oui j'ai ce problème avec n'importe quel projet. Et ce même lorsque je désinstalle et réinstalle le logiciel. Ce problème n'est pas systématique mais il apparaît assez fréquemment.

        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2020 à 12:37:10

          Sinon la ligne 12 dans ton extrait de code me parait douteuse
          • Partager sur Facebook
          • Partager sur Twitter
            17 février 2020 à 13:11:54

            Une compilation qui ne s'arrête jamais, ça ne pourrait pas être dû à des inclusions imbriquées de fichiers *.h ? Les fichiers *.h sont-ils bien prémunis contre ça ?
            • Partager sur Facebook
            • Partager sur Twitter
              17 février 2020 à 14:19:00

              magma :

              Bonjour magma. Comment ça ?

              En tout cas que ce soit dans ce projet qui comporte cette ligne de code où un autre, j'ai le même problème.

              Mais depuis que j'ai lancé ce sujet sur ce forum, j'ai éteint mon ordinateur et donc par conséquent, Code Block.

              Et Lorsque je relance Code Block, il ne pose pas de problème mais je sais pertinemment qu'il va se reproduire à un moment ou à un autre.

               Robun :

              Bonjour Robun. Comme fichier .h, je n'ai inclu que stdio.h et stdlib.h

              Et comment vérifier qu'ils sont prémunis contre ça ? Et d'ailleurs à quoi fais-tu référence lorsque tu di ÇA ?

              La compilation  ?

              -
              Edité par KuroWhite 17 février 2020 à 14:26:04

              • Partager sur Facebook
              • Partager sur Twitter
                17 février 2020 à 19:42:51

                Ce dont je parlais concerne les inclusions de fichier *.h qu'on écrit soi-même. Les *.h de la bibliothèque standard sont bien sûr prémunis contre les inclusions multiples. Voir par exemple https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15954-le-preprocesseur vers la fin, au paragraphe « #ifndefpour éviter les inclusions infinies ». (Si tu suis un cours et que tu n'as pas encore vu les fichiers *.h à écrire soi-même, pas besoin de lire ce lien.)

                Concernant le message de magma, il signale que ta ligne 12 est incorrecte. Tu as écris :

                struct FILE* fichier = NULL

                au lieu de :

                FILE* fichier = NULL

                Je viens de vérifier. Le type FILE est ainsi défini :

                typedef struct
                {
                    /* diverses choses ... */
                } FILE;

                du coup *fichier est de type « struct struct »... Ça se trouve c'est ça qui fait boucler la compilation ? (Mais je n'en sais rien. D'ailleurs l'écriture est tellement bizarre que je ne tomberais pas de ma chaise si elle était acceptée...)

                -
                Edité par robun 17 février 2020 à 19:55:19

                • Partager sur Facebook
                • Partager sur Twitter
                  17 février 2020 à 20:44:43

                  Hello,

                  Boucler indéfiniment pour des inclusions non protégées n'est pas possible (ou alors le compilateur est mal foutu): la norme précise que le niveau maximum d'inclusions est de 63 niveaux (§ 5.2.4.1)

                  Quant au typedef struct {....} FILE, c'est tout à fait normal. En plus long, on écrirait

                  struct xyz {
                      .... // plein de machins
                  };
                  typedef struct xyz FILE;

                  -
                  Edité par edgarjacobs 17 février 2020 à 20:52:11

                  • Partager sur Facebook
                  • Partager sur Twitter

                  On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                    17 février 2020 à 20:55:09

                    Oui, oui, le typedef struct FILE est normal. Ce qui est anormal, c'est la déclaration signalée par magma :

                    struct FILE* fichier = NULL;



                    -
                    Edité par robun 17 février 2020 à 20:55:55

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 février 2020 à 23:00:43

                      Oupps, j'ai mal interpreté ton message. Sorry.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                        18 février 2020 à 20:08:10

                        Robun :

                        D'accord je ferai attention au "struct" la prochaine fois. Et j'ai compris la notion d'inclusion infini des fichiers *.h

                        Outre ça, le souci est que dans d'autres projet, qui n'ont rien à voir, j'ai déjà eu ce problème de compilation.

                        Et à ce moment là, lorsque je relançais Code Block sans avoir modifié le code source, il recompilait sans problème.

                        Si j'ignore cela, dois-je donc en déduire que si un programme compile indéfiniment c'est uniquement dû à mon code source qui est mal écrit ?

                        Et si c'est le cas, comment interrompre une compilation de force sur Code Block autrement qu' avec le bouton "Abort" qui ne fonctionne pas dans mon cas ? 

                        -
                        Edité par KuroWhite 18 février 2020 à 20:09:47

                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 février 2020 à 20:16:37

                          KuroWhite a écrit:

                          dois-je donc en déduire que si un programme compile indéfiniment c'est uniquement dû à mon code source qui est mal écrit ?

                          J'ai l'impression que non, puisque tu dis que d'autres programmes donnent eux aussi une compilation infinie. Il y a peut-être un problème de réglages de Code::Block ? Je ne sais pas...

                          (Donc en enlevant le "struct" en trop, ça compile toujours indéfiniment ?)

                          -
                          Edité par robun 18 février 2020 à 20:44:57

                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 février 2020 à 20:24:44

                            Non non ça compile très bien !

                            Même avec le "struct" ça compilait d'ailleurs.

                            En fait ce problème est vraiment aléatoire. Là je suis justement en train de travailler sur Code Block et il n'y a aucun problème de compilation.

                            Mais ce que je voudrais savoir c'est comment interrompre une compilation de force sur Code Block autrement qu' avec le bouton "Abort". 

                            Car j'ai la certitude que se problème vas se manifester de nouveau

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 février 2020 à 23:03:00

                              Salut,
                              Je viens de tester de faire des include en boucle et ça s'arrête quelque part (je ne suis pas sur Code::Blocks).
                              Personne n'a demandé sur quel système se trouve KuroWhite?
                              D'après les symptômes, ça peut dépendre autant du système que de C::B.
                              Je ne crois pas que ce soit le compilateur en lui-même.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Le Tout est souvent plus grand que la somme de ses parties.

                                19 février 2020 à 15:02:27

                                PierrotLeFou :

                                Bonjour PierrotLeFou.

                                Effectivement, en faisant des recherches sur ce problème, j'avais trouvé un forum en anglais qui disait que le problème état propre à l'OS Windows... et il s'avère que je travaille sur Windows !

                                Il disait aussi qu'on ne pouvait rien y faire. Mais la réponse ne me satisfaisant pas, j'ai posé la question ici.

                                -
                                Edité par KuroWhite 19 février 2020 à 15:02:51

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 février 2020 à 15:13:48

                                  Lu ´

                                  As-tu vérifié que ton système est a jour et que c’est la dernière version de CB qui est installé ?

                                  Si ça ne marche toujours pas tu peux utiliser Visual Studio Community qui est gratuit et « plus adapté » a programmer sous Windows du fait qu’il a était créé par M$.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 février 2020 à 15:22:26

                                    Si tu es sur Windows, es-tu assez habile avec 'cmd'?
                                    Je suis sur Windows 10 et je n'ai pas d'IDE. J'édite avec Bloc-Notes ou Notepad++ (que je connais peu).
                                    Je passe aisément de mon dossier des sources à cmd où j'appelle directement 'gcc'.
                                    Je me suis fait un petit script que j'appelle dès l'appel à cmd pour initialiser ce qu'il faut dont la variable d'environnement 'path' et mon nouveau dossier de travail.

                                    -
                                    Edité par PierrotLeFou 19 février 2020 à 15:26:55

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Le Tout est souvent plus grand que la somme de ses parties.

                                      19 février 2020 à 17:03:17

                                      Re,-

                                      Sous win7, avec gcc ver 6.3.0 et en ligne de commande, ce code dans le fichier include.c

                                      #include "include.h"

                                      et avec include.h

                                      #include "include.h"

                                      donne le message d'erreur

                                      In file included from include.h:1:0,
                                                       from include.h:1,
                                                       ....,
                                                       from include.c:1:
                                      include.h:1:21: error: #include nested too deeply
                                       #include "include.h"
                                                           ^
                                      

                                       Mais je me suis suis apparemment planté sur le nombre d'include autorisé: ma version de gcc s'arrête après 199 nested include.

                                      -
                                      Edité par edgarjacobs 19 février 2020 à 17:08:30

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                                        19 février 2020 à 17:32:53

                                        J'ai exactement le même message. Je n'ai pas remarqué le nombre d'appels avant qu'il atteigne sa limite.
                                        Je suis sur W10 avec Mingw-w64
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Le Tout est souvent plus grand que la somme de ses parties.

                                          2 mars 2020 à 15:16:22

                                          Bonjour à tous. Je suis réellement désolé de répondre aussi tardivement à toutes vos interventions mais je m'occupais d'autres aspects de ma vie...

                                          Bref, encore une fois, je m'excuse.

                                          PokiCode :

                                          Qu'est-ce qu'un CB ? Si tu fais référence à l'OS que j'utilise, c'est Windows 10. Et il est apparemment à jour.

                                          Par rapport à "Visual Studio Community", si j'ai encore autant de problème avec Code Block, je pense que je vais migrer vers son cousin Windows alors.

                                          Mais tu ne connais vraiment aucun moyen de stopper de force une compilation sur Code Block ?

                                          PierrotLeFou :

                                          Oui je suis assez à l'aise avec le terminal...mais sur Linux ! Je sais faire des fichiers source avec gedit ou encore geany et les compiler avec la commande gcc -Wall nom_fichier.c -o nom_fichier etc... mais cela je n'ai pas appris a le faire sur Windows uniquement sur Linux.

                                          Et puis j'aimerais rester sur Windows si possible étant donné que j'ai Linux sur mon ordinateur en tant que machine virtuel ce qui le rend assez lent.

                                          -
                                          Edité par KuroWhite 2 mars 2020 à 15:17:03

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            2 mars 2020 à 18:38:49

                                            Lu'

                                            CB = Code::Blocks.

                                            Je ne suis pas un connaisseur de CB, je l'ai utilisé lorsque j'ai commencé la programmation en C++, et je n'ai pas été conquis par ce qu'il offrait, je suis donc passé à Visual Studio en version Community. Donc je peux pas trop aider quand à l'utilisation de CB.

                                            Cependant je te conseille d'utiliser VS Community car il est issu du développeur de l'OS, parce qu'il est performant, gratuit, et qu'il est tenu à jour. De ce que j'ai vu, CB n'a pas eu de nouvelle version depuis décembre 2017.

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              2 mars 2020 à 18:46:56

                                              Salut,
                                              Dans le contexte actuel, CB ou C::B fait référence à Code::Blocks.
                                              Si c'est lui qui est en boucle, le seul moyen de l'arrêter est de faire Alt+F4. Mais tu arrêtes tout.
                                              Je ne sais pas dans quel état vont se retrouver tes fichiers. Ce sont les exécutables qui risquent d'être dans un état douteux.
                                              J'utilise cmd pour compiler et exécuter. Je peux alors utiliser Ctrl+C pour arrêter l'exécution (comme dans Linux?).
                                              Si tu ne fais pas des choses trop compliquées, cmd est facile à apprendre.
                                              Il y a une bonne quantité de documentation sur le web à propos de cmd.
                                              L'appel à gcc se fera comme pour Linux. Aucune différence dans la syntaxe (il faut installer le compilateur).
                                              Il y a seulement le problème de mettre le chemin de gcc dans ta variable d'environnement 'path', ça te dit quelque chose?
                                              Ça te prendra un éditeur. N'utilise pas ceux qui génèrent du code enrichi, comme Word ou Wordpad.
                                              J'utilise Bloc-Notes ou Notepad++ (ce dernier doit être installé).
                                              Windows va un peu protester si tu changes l'extension pour .c ou .h, mais il comprend si tu lui dit que ce sera l'éditeur par défaut.
                                              C'est Bloc-Notes qui sera choisi. C'est un peu plus compliqué avec Notepad++. Je me suis fait un raccourci clavier pour y accéder.
                                              C'est facile de passer de cmd à ton dossier qui contient les sources avec Alt+Tab ou Win+<numéro>
                                              Tout le "setting" de cmd reste le même en passant de l'un à l'auttre.
                                              Par défaut, tes exécutables vont se retrouver sur le même dossier que les sources.
                                              et tu n'as pas besoin de préciser l'extension '.exe' sur le nom de l'exécutable. gcc la génère lui-même.
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Le Tout est souvent plus grand que la somme de ses parties.

                                                27 mars 2020 à 2:01:54

                                                PokiCode :

                                                 D'accord Je vais essayer ça. J'abandonne Code Block pour le moment et à l'avenir, je me concentrerai sur Visual Studio Community.

                                                PierrotLeFou :

                                                Oui je comprends ce que tu dis. Sauf pour Alt+f4 qui, il me semble, ferme totalement une fenêtre. J'ai déjà Notepad ++ et j'a déjà été confronté aux variables d'environnement lorsque je devais utiliser la commande "javac" pour compiler en Java.

                                                Comme je viens de le dire, je vais laisser Code Block pour le moment et essayer Visual Studio Community. Mais à l'avenir, j'essaierai ce dont tu parle.

                                                Merci à tout les deux.

                                                -
                                                Edité par KuroWhite 27 mars 2020 à 2:02:12

                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Code Block compile indéfiniement

                                                × 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