Salut à tous.

J'utilise une bibliothèque dans laquelle, j'ai déclaré d'une part des fonctions et d'autre part des constantes de couleurs.
Ma bibliothèque se nomme "libmine".

Ce qui me pose problème, ce sont mes constantes. Par contre, je n'ai pas de problèmes avec mes fonctions.
Dans "libmine.c", j'ai mis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#include "libmine.h"
 
T_COLOR         _black          = {  0,   0,   0};
T_COLOR         _grey           = {128, 128, 128};
T_COLOR         _white          = {255, 255, 255};
Dans "libmine.h", j'ai mis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef __LIBMINE__
#define __LIBMINE__
 
typedef struct
{
        char    red;
        char    green;
        char    blue;
} T_COLOR;
 
T_COLOR         _black;
T_COLOR         _grey;
T_COLOR         _white;
 
#endif
Je compile la bibliothèque. Aucun problème.

Dans le programme "main.c", j'appelle l'include :
J'obtiens la liste suivante des messages d'erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
/usr/bin/ld*: /warehouse/Prog_C/09.Library//libmine.a(tft.o):(.data+0x808)*: définitions multiples de «*_white*»; main.o:(.bss+0x8)*: défini pour la première fois ici
/usr/bin/ld*: /warehouse/Prog_C/09.Library//libmine.a(tft.o):(.data+0x80c)*: définitions multiples de «*_grey*»; main.o:(.bss+0x4)*: défini pour la première fois ici
/usr/bin/ld*: /warehouse/Prog_C/09.Library//libmine.a(tft.o):(.bss+0xf0a0)*: définitions multiples de «*_black*»; main.o:(.bss+0x0)*: défini pour la première fois ici
J'ai pourtant mis le warpper "#ifndef" afin d'éviter la duplication du contenu de "libmine.h".
A tout hasard, je donne le makefile du main.c :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# ------------------------------- #
#   Déclaration des Executables   #
# ------------------------------- #
 
RM      = @rm -f
CC      = @gcc
EX      = @chmod +x
 
# -------------------------- #
#   Déclaration des Objets   #
# -------------------------- #
 
SRC     = main.c
OBJ     = main.o
BIN     = tft18
 
# ---------------------------- #
#   Déclaration des Includes   #
# ---------------------------- #
 
INCS    = -I"/warehouse/Prog_C/09.Library/include/"
 
# --------------------------------- #
#   Déclaration des Bibliothèques   #
# --------------------------------- #
 
LIBS    = -L"/warehouse/Prog_C/09.Library/"
 
# ------------------------------ #
#   Déclaration des Paramètres   #
# ------------------------------ #
 
FLAG    = -O -Wall -Wextra -Wpedantic
LOAD    = -lmine -lm
 
 
# ------------------------------------ #
#   Compilation et Edition des liens   #
# ------------------------------------ #
 
all: before $(BIN) after
 
before:
        clear
        $(RM) $(OBJ)
        $(RM) $(BIN)
 
$(BIN): $(OBJ)
        $(CC)    $(OBJ) $(LIBS) -o $(BIN) $(LOAD)
 
$(OBJ): $(SRC)
        $(CC) -c $(SRC) $(INCS) -o $(OBJ) $(FLAGS)
 
after:
        $(RM) $(OBJ)
        $(EX) $(BIN)
        @./$(BIN)
Pourquoi ai-je ce problème que sur les constantes ?
Je ne comprends pas pourquoi les déclaratives de mes fonctions ne me pose aucun problème.

Comment résoudre mon problème ?

Cordialement.
Artemus24.
@+