hallo!
ich glaube ich habe schon zu lange nicht mehr c programmiert.. heute wollte ich ein kleines tool schreiben, das mit farbformatierung zu tun hat. ich habe es dann auch durch ein paar unschöne tricks zum laufen bekommen, würde aber gerne wissen, warum es so nicht funktioniert:
ich habe 4 dateien:
test.c, welches nur test.h inkludiert: in test.c wird in main() die methode colprintf() aus colprintf.c aufgerufen, außerdem benötigt es konstanten aus colprintf.h
test.h, welches stdio.h, stdlib.h und colprintf.h inkludiert
colprintf.c, welches nur colprintf.h inkludiert: enthält die methode colprintf()
colprintf.h, welches stdio.h, stdlib.h inkludiert: enthält deklaration für colprintf und einige konstanten
mein makefile sieht so aus:
all: test colprintf
gcc -o test test.o colprintf.o
colprintf: colprintf.c colprintf.h
gcc -Wall -ansi -g -pedantic -c colprintf.c
test: test.c test.h
gcc -Wall -ansi -g -pedantic -c test.c
ich sage 'make' und bekomme:
colprintf.o(.data+0x0): In function `colprintf':
/home/mj/programming/c/colprintf/colprintf.c:7: multiple definition of `COLOR_SPECIAL_RESET'
.
. (das gleiche für jede Konstante)
.
test.o(.data+0x0):/home/mj/programming/c/colprintf/test.c:4: first defined here
collect2: ld returned 1 exit status
make: *** [all] Error 1
habe ich da irgendeinen anfängerfehler gemacht, oder ist das etwas subtileres?
lg michi