Voila j'ai une structure global dans un .h
Ma structure :
et que je declare ma global juste en dessous dans mon .h.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 typedef struct s_param { char *name; unsigned int nbArg; unsigned long int syscall; unsigned int typeRetour; int firstArg; int secondArg; int thirdArg; int fourthArg; int fifthArg; int sixthArg; } t_param;
Je vous ai mis juste deux ligne car les 300 lignes de syscall serait un peu horrible
Donc cette global est uniquement en lecture. En incluant le .h que dans un seul .c sa marche et c'est fonctionnel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 # define INT 10 # define UINT 11 # define STR 12 # define PTR 13 const t_param g_param[300] = { {"read", 3, 0, INT, INT, PTR, UINT, 0, 0, 0}, {"write\t", 3, 1, INT, INT, STR, UINT, 0 ,0 ,0} };
Malheureusement pour eviter de rendre un peu le fichier trop sal, j'ai eu envie de partager mes fonctions dans plusieurs .c
Mais cette erreur apparait :
Cette global est pour le moment utilise uniquement dans deux .c (c'est pour sa que l'erreur n'est que dans deux .c).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 get_reg.o:(.rodata+0x20): multiple definition of `g_param' main.o:(.rodata+0x20): first defined here collect2: ld returned 1 exit status make: *** [test] Error 1
Donc voila si vous avez une idee ou deux ce serait cool car la je bloque.
Ps : j'ai essaye de la declare en extern la global mais ne marche pas et me fait la meme erreur avec des warnings en plus.
Cordialement
Partager