C - variable définie dans plusieurs fichiers
John
-
naster -
naster -
Bonjour,
Je souhaite disposer d'un tableau de chaines de caractères défini dans tout les fichiers de mon code source.
Si je ne le défini que dans un fichier, je ne peux m'en servir dans les autres, mais si je le défini dans tout les fichiers le compilateur m'accuse d'avoir défini plusieurs fois la même variable (il a bien raison me direz vous).
Alors j'ai essayé de le définir complétement dans un fichier, puis de seulement le déclarer dans les autres. Ca marche mais j'ai un warning : "fichier.c:7: attention : array 'mon_tableau’ assumed to have one element".
Le numéro de ligne correspond à la déclaration de mon tableau : "const char *mon_tableau[];"
Comment doit-on faire ?
EDIT ; il se trouve qu'en déclarant de le tableau de cette manière : "const char *mon_tableau[3];" je n'ai plus le warning.
Cool, mais est-ce la solution ou juste une astuce ?
Je souhaite disposer d'un tableau de chaines de caractères défini dans tout les fichiers de mon code source.
Si je ne le défini que dans un fichier, je ne peux m'en servir dans les autres, mais si je le défini dans tout les fichiers le compilateur m'accuse d'avoir défini plusieurs fois la même variable (il a bien raison me direz vous).
Alors j'ai essayé de le définir complétement dans un fichier, puis de seulement le déclarer dans les autres. Ca marche mais j'ai un warning : "fichier.c:7: attention : array 'mon_tableau’ assumed to have one element".
Le numéro de ligne correspond à la déclaration de mon tableau : "const char *mon_tableau[];"
Comment doit-on faire ?
EDIT ; il se trouve qu'en déclarant de le tableau de cette manière : "const char *mon_tableau[3];" je n'ai plus le warning.
Cool, mais est-ce la solution ou juste une astuce ?
A voir également:
- C - variable définie dans plusieurs fichiers
- Renommer plusieurs fichiers en même temps - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
2 réponses
Salut,
Donc ce que tu as fait :
Sinon, pour utiliser une variable globale commune à plusieurs fichiers, tu la mets dans le .h avec le mot-clé extern. Ensuite, tu définis la variable dans un fichier.c. Et elle sera visible par les autres fichiers par inclusion du .h.
Cdlt
const char *mon_tableau[];ne peut pas marcher car le compilateur ne sait pas combien de cases allouées au tableau de pointeurs. Il faut donc spécifier la taille.
Donc ce que tu as fait :
const char *mon_tableau[3];" je n'ai plus le warning.est tout à fait normal ;-).
Sinon, pour utiliser une variable globale commune à plusieurs fichiers, tu la mets dans le .h avec le mot-clé extern. Ensuite, tu définis la variable dans un fichier.c. Et elle sera visible par les autres fichiers par inclusion du .h.
Cdlt
Mais comment faire pour avoir un fichier .h avec les var globale sans avoir le problème mentionné plus haut?
Mon fichier .h :
#ifndef DEF_VARGLOBALES
#define DEF_VARGLOBALES
SDL_Surface *ecran = NULL, //Var ecran qui contient tout
*imgFond = NULL, //Image en background
*texte = NULL; //Surface qui contient un texte;
FSOUND_STREAM *musique = NULL; //Musique d'intro
TTF_Font *police = NULL; //Contient la police d'écriture
SDL_Rect pos; //Contient la pos x et y
#endif
Mon fichier .h :
#ifndef DEF_VARGLOBALES
#define DEF_VARGLOBALES
SDL_Surface *ecran = NULL, //Var ecran qui contient tout
*imgFond = NULL, //Image en background
*texte = NULL; //Surface qui contient un texte;
FSOUND_STREAM *musique = NULL; //Musique d'intro
TTF_Font *police = NULL; //Contient la police d'écriture
SDL_Rect pos; //Contient la pos x et y
#endif