Je suis bien content d'être inscrit sur ce site, j'en ai appris des choses grace aux tutoriels!
Bref, j'ai une question qui reste sans réponse après 2 jours de recherches.
Je m'explique, pour faire simple imaginons que j'ai 3 fichiers, 1 contenant la fonction main, puis 2 autres contenant 2 fonctions differentes utilisant une structure commune :
#include "Fonctions.h"
#include "Ecran.h"
typedef struct {
unsigned int A;
unsigned int B;
unsigned int C;
}typestruct;
int main(void)
{
typestruct mastructure;
mastructure.A = 1;
mastructure.B = 2;
mastructure.C = 3;
return 0;
}
Puis un autre fichier utilisant la même structure (Fonctions.c):
A savoir que je programme pour un microcontroleur et que ces quelques lignes de code ne servent a rien; Juste pour que je comprenne comment faire. Ca ne change pas grand chose mais au moins vous le savez
Mon problème est que mes 2 fichiers qui contiennent mes fonctions (Fonctions.c et Ecran.c) ne reconnaissent pas le type que j'ai défini dans le fichier qui contient mon programme principal. Dans le cas ou j'ai un seul fichier avec des fonctions, il suffit de mettre la "déclaration" de la structure typestruct dans le fichier d'en-tête mais lorsque j'ai deux ou meme dix fichiers differents, comment faire pour que ma "déclaration" de structure soit commune aux fichiers? J'espere que c'est clair
Ensuite de la même facon, comment faire pour créer des #define utilisable dans chaque fichier du projet? (Par exemple, #define TRUE 1)
Et pendant que j'y suis, j'ai pour (mauvaise?) habitude de créer un fichier d'en-tête pour le fichier C qui contient le programme principal. Est-ce que ca se fait?
Merci beaucoup pour l'aide que vous me donnerez, je commence a tourner à rond avec toutes mes questions!
Je suis d'accord que les structures et les #define sont à mettre dans un fichier d'en-tête mais lorsque que j'ai plusieurs fichiers en C qui utilisent la même structure (Par exemple une structure Date); je suis obligé de mettre la même structure dans chaque fichier d'en-tête? Il n'y a pas un moyen de faire comprendre que cette structure est commune à tout les fichiers? Idem pour les #define?
Pour le TRUE ce n'était qu'un exemple, pour mon cas, je pensais a une fréquence de fonctionnement : #define FREQ 8000000
Je trouve ca dommage de devoir définir dans chaque fichier la fréquence par exemple, surtout que forcement, c'est toujours la même
Je suis d'accord que les structures et les #define sont à mettre dans un fichier d'en-tête mais lorsque que j'ai plusieurs fichiers en C qui utilisent la même structure (Par exemple une structure Date); je suis obligé de mettre la même structure dans chaque fichier d'en-tête? Il n'y a pas un moyen de faire comprendre que cette structure est commune à tout les fichiers? Idem pour les #define?
Ya toujours moyen ... Utiliser un makefile qui se charge de le faire ... Le rajouter dans les options de compilation, ... M'enfin rien de propre selon moi.<
Dis toi qu'en Java, c'est 1fichier par class. Ici, tu fais autant de structure que tu veux ... La restriction c'est que le compilateur lit séquencielement.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Si c'est une structure globale pour ton programme, déclare-la dans un fichier "structures.h" et inclus ce fichier partout où tu en as besoin. C'est le plus simple si tu veux éviter de jouer avec les options de compilation...
Si tu joues avec les options de compilation, tu vas avoir des problèmes au bout d'un moment ... Tu vas t'y perdre. Le plus simple c'est de faire "commun.h" dans lequel tu mets toutes les définitions.
Encore plus propre, un commun.h de cette forme :
#ifndef COMMUN.H
#define COMMUN.H
#include "commun_t.h" // Pour les structures
#include "commun_d.h" // Pour les defines
#include "commun_f.h" // Pour les fonctions
#endif
Mais tu peux très bien mettre tout d'un coup aussi.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Merci pour toute vos réponses, ça m'a permit de résoudre mon problème.
Finalement j'ai préféré créer un fichier commun.h plutôt que de créer un fichier makefile. Pas très propre non plus selon moi.
Par contre j'ai directement mis mes structures et définitions communes dans le fichier, je n'en ai pas assez pour recréer un fichier à chaque fois mais je retiens l'idée!
Merci beaucoup pour votre aide, et vive le forum!
Structure et #define communs à plusieurs fichiers
× 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.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.