mehrfaches initialisieren von liste verhindern
-
Moin moin,
habe das folgende Problem:
In einem header-file wird eine Liste initialisiert, in der Form:
struct T_device deviceList[] = { {eintrag1}, {eintrag2}, {eintrag3} }
durch den include-guard kann ich verhindern, dass meine header-datei mehrfach von einem projekt eingebunden wird. Aber wie kann ich verhindern, dass diese Datei (die von 2 Programmen genutzt werden soll) die liste mehrfach initialisiert, was ja nicht erlaubt ist.
Die Initialisierung soll eINMAL durchgeführt werden, und bei späterem Auftauchen als bekannt gelten.Vielen Dank im Voraus
rettsan
-
vielleicht im header das array als extern deklarieren und in einer eigenen c-datei dann definieren.
ja, das ist wohl das beste hier.
also mach deinen code genauso wie er ist in ne c-datei rein. und mach ne deklaration des arrays ohne initialsisierung und mit extern davor in den header.
-
Hi, das war ja mal eine zügige Antwort. Das Problem ist, dass die Header Datei durch ein anderes Programm des Projektes automatisch generiert wird, und das sollte auch so bleiben. also suche ich einen MEchanismus, mit dem ich in EINER Header Datei mir eine Liste aus Structs initialisieren kann. Es darf jedoch dann zu keinen Problemen kommen, wenn die Header Datei mit der initialisierten Liste von mehreren Stellen eingebunden wird. (Dies wäre ja auch nicht erlaubt, da ein mehrfaches initialisieren einer Liste nicht erlaubt sein kann) - also muss ein Mechanismus her, der die Liste nur dann initialisiert, wenn Sie nicht bereits vorher eingebunden wurde (evtl. auch durch ein ANDERES Programm) - irgendetwas mit #ifdef müsste doch machbar sein, nur seteh ich da gerade auf dem Schlauch...
-
rettsan schrieb:
Hi, das war ja mal eine zügige Antwort. Das Problem ist, dass die Header Datei durch ein anderes Programm des Projektes automatisch generiert wird, und das sollte auch so bleiben.
ok. du machst dann zwei dateien.
die machDenSpeicher.c#include "automatischGenerierte.h"
und die deklariere.h
extern bla bla;