Variables globales en C
Résolu/Fermé
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
-
27 nov. 2008 à 14:52
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 - 27 nov. 2008 à 15:47
crazyghandi Messages postés 312 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 octobre 2011 - 27 nov. 2008 à 15:47
A voir également:
- Variables globales en C
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret? ✓ - Forum Python
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Variable drapeau en algorithme - Forum Python
11 réponses
dubcek
Messages postés
18785
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
6 mai 2025
5 631
27 nov. 2008 à 14:56
27 nov. 2008 à 14:56
helllo
y a-t-il un include fonctions.h dans le fichier fonctions.c ?
y a-t-il un include fonctions.h dans le fichier fonctions.c ?
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
27 nov. 2008 à 14:57
27 nov. 2008 à 14:57
t'as bien incul fonction.h dans fonction.c ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
27 nov. 2008 à 15:02
27 nov. 2008 à 15:02
Salut,
t'as bien incul fonction.h
Obsédé ;-DDDDD
t'as bien incul fonction.h
Obsédé ;-DDDDD
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
27 nov. 2008 à 15:06
27 nov. 2008 à 15:06
lol
faute de frappe ^^
faute de frappe ^^
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
27 nov. 2008 à 15:04
27 nov. 2008 à 15:04
ah non je vien de le faire c'est deja bocou mieu
me il me dit qu'il y'a deux variables qui ont ete multiply defined
me il me dit qu'il y'a deux variables qui ont ete multiply defined
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
27 nov. 2008 à 15:06
27 nov. 2008 à 15:06
dans functions.h
typedef struct object object;
struct object
{
int a;
int size;
char n[30];
unsigned short *serial;
char mdate[30];
char parent[30];
struct object *nxt;
};
typedef object *list;
object *dlist = NULL;
object *flist = NULL;
et il me dirt lors de la compilation que dlist et flist sont deja declares
typedef struct object object;
struct object
{
int a;
int size;
char n[30];
unsigned short *serial;
char mdate[30];
char parent[30];
struct object *nxt;
};
typedef object *list;
object *dlist = NULL;
object *flist = NULL;
et il me dirt lors de la compilation que dlist et flist sont deja declares
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 nov. 2008 à 15:10
27 nov. 2008 à 15:10
Normal, on ne définie jamais des variables dans un fichier en-tête.
Les en têtes ne servent qu'au déclarations.
Donc, si tu tiens à conserver tes variables globales, met un "extern" devant leur déclaration et supprime tout assignement ET remet les définitions dans un .c, n'importe lequel, même un nouveau.
Les en têtes ne servent qu'au déclarations.
Donc, si tu tiens à conserver tes variables globales, met un "extern" devant leur déclaration et supprime tout assignement ET remet les définitions dans un .c, n'importe lequel, même un nouveau.
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
27 nov. 2008 à 15:15
27 nov. 2008 à 15:15
ok merci pour les reponses
donc nouvo functions.h
typedef struct object object;
struct object
{
int a;
int size;
char n[30];
unsigned short *serial;
char mdate[30];
char parent[30];
struct object *nxt;
};
typedef object *list;
void disp(unsigned short *a, char *b, int c, char *d, char *e);
char *find_mdate (const char *obj);
void add_dir(const char *n, const char *p,unsigned short *q);
void add_file(const char *n, const char *p,unsigned short *q);
void analyse_dir(DIR *rep, const char *p);
et j'ai remis dans le main.c :
#include "functions.h"
extern object *dlist = NULL;
extern object *flist = NULL;
extern char s2[32];
int main (int argc, char *argv[]) {
pourtant lors de la compilation il me dit que dans functions.c dlist et flist et s2 ne sont pas declarees
donc nouvo functions.h
typedef struct object object;
struct object
{
int a;
int size;
char n[30];
unsigned short *serial;
char mdate[30];
char parent[30];
struct object *nxt;
};
typedef object *list;
void disp(unsigned short *a, char *b, int c, char *d, char *e);
char *find_mdate (const char *obj);
void add_dir(const char *n, const char *p,unsigned short *q);
void add_file(const char *n, const char *p,unsigned short *q);
void analyse_dir(DIR *rep, const char *p);
et j'ai remis dans le main.c :
#include "functions.h"
extern object *dlist = NULL;
extern object *flist = NULL;
extern char s2[32];
int main (int argc, char *argv[]) {
pourtant lors de la compilation il me dit que dans functions.c dlist et flist et s2 ne sont pas declarees
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 nov. 2008 à 15:24
27 nov. 2008 à 15:24
Normal, tu ne les as pas déclaré dans fonction.h !
Attention à ce que j'ai écris, il y a une différence entre déclaration et définition/assignement !
Exemple :
truc.h
truc.c
main.c
La déclaration sert à annoncer au compilateur que dans l'unité de compilation (le .c plus les include) tu utilisera une variable nommé 'a' de type 'int'.
La définition sert à dire au compilateur que tu crée une variable ayant pour nom 'a' pour type 'int' et qu'il doit donc prévoir l'espace mémoire nécessaire pour cette variable. Puis avec le '=' tu lui dit quelle valeur doit prendre cette variable.
Attention à ce que j'ai écris, il y a une différence entre déclaration et définition/assignement !
Exemple :
truc.h
extern int a;
truc.c
#include "truc.h" int a=32;
main.c
#include "truc.h" int main() { a=a+3; return 0; }
La déclaration sert à annoncer au compilateur que dans l'unité de compilation (le .c plus les include) tu utilisera une variable nommé 'a' de type 'int'.
La définition sert à dire au compilateur que tu crée une variable ayant pour nom 'a' pour type 'int' et qu'il doit donc prévoir l'espace mémoire nécessaire pour cette variable. Puis avec le '=' tu lui dit quelle valeur doit prendre cette variable.
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
27 nov. 2008 à 15:32
27 nov. 2008 à 15:32
je deprime
eske il fo linker main et functions
si je link que main il me dit que ya 2 de mes 5 fonctions qui sont "unidentified symbol dans main
si je link les 2 il me dit que dlist et flist son multiply defined
eske il fo linker main et functions
si je link que main il me dit que ya 2 de mes 5 fonctions qui sont "unidentified symbol dans main
si je link les 2 il me dit que dlist et flist son multiply defined
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
27 nov. 2008 à 15:46
27 nov. 2008 à 15:46
Bien sur qu'il faut tout lier ensemble !
Pour éviter les définitions multiples, fait ce que je t'ai dit !
Pour éviter les définitions multiples, fait ce que je t'ai dit !
crazyghandi
Messages postés
312
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
4 octobre 2011
19
27 nov. 2008 à 15:47
27 nov. 2008 à 15:47
bon j'ai finalment reussi tout marche nikel a present je vous remercie beaucoup a bientot