Header: #ifndef wird ignoriert
-
Hallo,
ich habe eine Headerdatei, die 2x eingebunden wird. Um mehrfache definition
zu vermeiden, habe ich die ganze Datei mit Precompile-Anweiseungen geschütz,
die jedoch leider ignoriert werden.Fehlermeldung von Anjuta: parser.c:15:multiple definition of `cmd_table'
Hier der Quelltext:main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "cmd_table.h" int main() { printf("Hello world\n"); return (0); }
parser.c ... #include "cmd_table.h" struct cmd *searchTable(char *name){ int i; for(i=0; i < NCMD; ++i){ if(!strcmp(name,cmd_table[i].name)){ return &cmd_table[i]; } } return 0; }
cmd_table.h #ifndef CMD_TABLE_H #define CMD_TABLE_H struct cmd{ char name[CMD_LEN]; int min_para; int max_para; void (*func)(void); } cmd_table[NCMD] = { {"a",0,0,&a}, {"b",2,2,&b}, {"c",1,1,&c}, {"d",1,2,&d}, {"exit",0,0,&quit} }; #endif
Hab ich irgendetwas übersehen?
Thx
-
so funzt sicher
bspmain.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "cmd_tabel.h" cmd cmd_table[5] = { {"a",0,0,0}, {"b",2,2,0}, {"c",1,1,0}, {"d",1,2,0}, {"exit",0,0,0} }; int main() { printf("Hello world\n"); return (0); }
cmd_table.h #ifndef CMD_TABLE_H #define CMD_TABLE_H struct cmd{ char name[10]; int min_para; int max_para; void (*func)(void); }; #endif extern cmd cmd_table[5];
parser bleibt gleich
mfg
-
Danke, so funktioniert das Ganze.
Kannst du mir auch den Grund dafür nennen?
Ich dachte bis jetzt alles zwieschen den Tags würde einfach ignoriert werden.
-
slurm schrieb:
Danke, so funktioniert das Ganze.
Kannst du mir auch den Grund dafür nennen?
Ich dachte bis jetzt alles zwieschen den Tags würde einfach ignoriert werden.Wird es auch. Nur mit dem Kompilieren jeder ÜE beginnt ein neues Spiel. Somit ist CMD_TABLE_H am Beginn der main.c Kompilierung genauso wenig definiert wie bei parser.c.