Utilisation de fichier.h
Résolu
eugenieraza
-
eugenieraza -
eugenieraza -
Bonjour,
Quand je crée un fichier.h et que j'inclue un include "fichier.h"
Et que j'essaie de compiler mon fichier.c, c'est toujours le fichier .h que le compilateur essaie de compiler! Quelqu'un peut me dire comment éviter ça?
voici un exemple de mon fichier
personne .h ,
merci d'avance
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
Quand je crée un fichier.h et que j'inclue un include "fichier.h"
Et que j'essaie de compiler mon fichier.c, c'est toujours le fichier .h que le compilateur essaie de compiler! Quelqu'un peut me dire comment éviter ça?
voici un exemple de mon fichier
personne .h ,
#ifndef DEF_PERSONNE #define DEF_PERSONNE #endif typedef struct Personne Personne struct_Personne { char nom[ 100]; char prenom[100]; char adresse[1000]; int age; int garcon; //Booleen :1 = garcon, 0 = fille ; } ; et mon fichier qui l'utilise : personne.c (je ne peux pas compiler pour voir s'il n'y a pas d'erreur dans la façon de le coder. Si vous voyez des erreurs vous pouvez me les signaler aussi svp) #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <string.h> #include "personne.h" int main (int argc, char *argv[]) { Personne joueur1 , joueur2; int mode = 1; //choisir mode 1 joueur ou 2 joueurs printf(" ****1 joueur ****\n"); printf(" ****2 joueurs ****\n"); printf(" choisissez un mode : 1 mode 1 joueur et 0 mode 2 joueurs \n"); scanf ("%d", &mode); switch(mode) {case 1 : printf("vous avez choisi mode 1 joueur\n"); break; case 2 : printf("vous avez choisi mode 2 joueurs\n"); break; } if (mode == 1) { printf("joueur 1\n\n"); printf("Quel est votre nom? \n"); scanf("%s",joueur1.nom ); printf("\n\n"); printf("Quel est votre prenom? \n"); scanf("%s",joueur1.prenom ); printf("\n\n"); printf("Bienvenue %s %s", joueur1.prenom, joueur1.nom); return 0; } else if (mode==0) { printf("vous avez choisi mode 2 joueurs \n"); printf("joueur 1\n\n"); printf("Quel est votre nom? \n"); scanf("%s",joueur1.nom ); printf("\n\n"); printf("Quel est votre prenom? \n"); scanf("%s",joueur1.prenom ); printf("\n\n"); printf("Bienvenue %s %s", joueur1.prenom, joueur1.nom); printf("joueur 2\n\n"); printf("Quel est votre nom? \n"); scanf("%s",joueur2.nom ); printf("\n\n"); printf("Quel est votre prenom? \n"); scanf("%s",joueur2.prenom ); printf("\n\n"); printf("Bienvenue %s %s", joueur2.prenom, joueur1.nom); } }
merci d'avance
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
A voir également:
- Fichier .h
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
- Impossible d'utiliser ce numéro de téléphone pour la validation - Forum Gmail
1 réponse
Déjà, tu n'a pas l'air d'avoir compris l'intérêt des instructions de préprocesseur au début du .h:
Ce bout de code permet en fait d'éviter que le fichier soit inclus deux fois. Si cela arrive, alors la variable DEF_PERSONNE sera déjà définie, et rien ne sera inclus.
Malgré cela, cela aurait dû quand même marcher.
Autre petite erreur:
Quel compilateur utilise-tu ?
------------------------------------------------------------------------------------
"La peur mène à la colère. La colère mène à la haine. Et la haine ... mène à la souffrance." - Yoda
#ifndef DEF_PERSONNE // si la variable de préproc DEF_PERSONNE n'est pas définie, executer ce qui suit, sinon ne rien faire #define DEF_PERSONNE // définir DEF_PERSONNE //ton code ici #endif // fin de la condition
Ce bout de code permet en fait d'éviter que le fichier soit inclus deux fois. Si cela arrive, alors la variable DEF_PERSONNE sera déjà définie, et rien ne sera inclus.
Malgré cela, cela aurait dû quand même marcher.
Autre petite erreur:
switch(mode) { case 1 : printf("vous avez choisi mode 1 joueur\n"); break; case 2 : // ici, on devrait tester si la variable est égale à zéro, et non pas deux printf("vous avez choisi mode 2 joueurs\n"); break; // rajoute un message à afficher sur l'utilisateur n'entre ni un, ni deux default: printf("Vous n'avez entré ni un, ni deux !\n"); return 0; break; }
Quel compilateur utilise-tu ?
------------------------------------------------------------------------------------
"La peur mène à la colère. La colère mène à la haine. Et la haine ... mène à la souffrance." - Yoda
codeblocks est un outil qui te permet d'orchestrer ton travail de développeur:
il te fournit un éditeur texte adapté, un débuggeur et peut lancer la compilation.
L'étape de compilation va transformer ton code (du texte) en langage machine, un autre code que la machine saura interpréter. Code blocks n'en est pas capable, et délègue la tâche à un autre programme, configurable.
Si ce dossier n'existe pas:
alors désinstalle ta version de codeblocks et installe celle-ci, qui comprends mingw, un compilateur:
https://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup.exe/download
sinon, c'est manifestement autre chose.
il me semble même m'être moi-même déjà trompé sur ce point