Bonjour,

J'utilise Dev C++ et en voulant compiler mon programme (pas encore fignol�) le compilateur (apr�s quelques autres tentatives et r�solutions d'erreurs de d�butants) me met tr�s exactement:

multiple definition of 'choix_1'
first define here
Id returned 1 exit status
<adresse de makefile.win> [Built Error] ["Sudoku]Error1

Je me demande pourquoi il me dit first define here sans num�ro de ligne d�j�, mais apr�s avoir chang� le nom � 2 endroits seulement (la d�finition et l'appel), la compilation plante encore pour la m�me raison (mais avec le nom de la fonction chang�!). Si c'est une erreur syntaxique, voici les utilisation du nom de la fonction et le #include du fichier concern�, aussi j'ai utilis� le #define comme �crit:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include"choix_un_NbrGrillesMax.cpp"
choix_1();
 
//dans le fichier concerné
#ifndef untruk  //pour éviter justement toute déclaration multiple
#define untruk
 
void choix_1()
{
         // définition de la fonction
}
 
 
#endif
Cette erreur me para�t encore plus incompr�hensible du fait lorsque je d�clare la fonction dans le fichier main.cpp en gardant le m�me nom, la compilation se passe sans probl�me. Cela m'a fais croire � une erreur simple et qu'il fallait malgr�s l'include d�clarer la fonction (ce qui n'est pas tr�s logique si on se tient au fait que le compilateur a d�j� lus la d�finition de la fonction) et si je change une ligne (car le code n'est pas parfait au d�but pour le menu) et que je remets � compiler, il me remet exactement la m�me erreur, quoique justifi�e maintenant, et si j'efface la d�claration en trop, l'erreur reste.
Aussi lorsque j'ai commenc� � coder ce programme, cette fonction �tait non pas void mais int, et apr�s avoir chang�, en allant dans le gestionnaire des fonctions, variables et structures-classes, je me rends compte que le compilateur reconnait encore la fonction comme renvoyant un int, et me signale pour cela une erreur car la fonction n'a pas de variable o� renvoyer la valeur de la fonction... Apr�s je ne sais plus quelles manipulations, j'ai r�ussi � effacer ce double fant�me.
Enfin au d�but du codage, j'avais utilis� un fichier ent�te pour main, mais comme main en elle-m�me n'avait pas beaucoup de variables (une) et n'�tait qu'un menu, j'ai enlev� l'include et le fichie du projet, en d�clarant la variable dans main.cpp donc. Quelle n'est pas ma surprise de voir qu'il y a une d�claration �x�dentaire de la variable! Le compilateur continuait � inclure le fichier ent�te malgr�s que je l'eus supprimer du projet et qu'il n'y avait aucune utilisation. Le fichier en question �tait rest� dans le r�pertoire o� j'avais rang� le programme, et il �tait intacte, et le compilateur s'en servait et le reconnaisait. Ce n'est qu'en le supprimant de l'ordinateur (sans passer par la corbeille) que j'ai pus avoir la paix.

Je vous assure que je n'invente rien, et que tout ceci (qui ressemble � un film d'angoisse) est vrai et s'est pass�! Est-ce Dev C++ le probl�me? Est-ce un oubli ou une erreur syntaxique de ma part? Sont-ce des fant�mes de la machine qui hantent mon pc?

La suite au prochain �pisode (ce n'est toujours pas une invention de ma part!)

P.S. : ce programme doit servir � calculer le nombre de grilles de sudoku possibles, avoir une id�e de l'ordre de grandeur pour voir, car m�me si on peut se dire qu'il y en a infiniment, il n'emp�che que les obstacles s'imposant rendent difficile l'�citure d'une seule grille par un humain, d'o� l'utilit� du calcul de masse, bien bourrin.
Aussi je suis d�butant (encore et toujours � lire des tutos et ce que je trouve depuis 1 an) et mes programmes ont un facheuse tendance � ne jamais r�ussir � la premi�re compilation et � me laisser tout b�te pendant une semaine au moins. Alors je ne serais pas �tonn� si ce n'est qu'un point virgule ou une b�tise de ce genre... -_-

P.P.S. : D�sol� pour la taille du message mais le probl�me vaut bien �a.