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.
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.
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 ?
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...)
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
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 ?
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 ?)
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.
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$.
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
Le Tout est souvent plus grand que la somme de ses parties.
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
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
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.
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.
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
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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.