globale Konstanten ohne Verwendung von #define

8

Ok, ich möchte eine Reihe von Speicheradressen als Konstanten in einer .h-Datei definieren, die von einer Reihe von .c-Dateien verwendet wird (wir sind in C, nicht in C ++). Ich möchte in der Lage sein, den Namen der Variablen zu sehen, anstatt nur die hexadezimale Adresse im Debugger zu sehen ... also möchte ich die #defines, die ich gerade habe, in globale Konstanten umwandeln . Das Problem ist, wenn ich sie so definiere:

%Vor%

Dann bekomme ich den gefürchteten "multiple declarations" -Fehler, da ich mehrere .c-Dateien mit dem gleichen .h. Ich würde gerne eine Enum verwenden, aber das wird nicht funktionieren, da es standardmäßig integer (das ist 16 Bit auf meinem System ... und ich muss eine bessere Kontrolle über den Typ haben).

Ich habe darüber nachgedacht, alle Adressen in eine Struktur zu schreiben ... aber ich habe keine Möglichkeit, die Standardwerte der Instanz der Struktur in der Headerdatei zu setzen (ich will nicht annehmen) dass eine bestimmte .c-Datei zuerst die Struktur verwendet und sie woanders ausfüllt. Ich möchte wirklich, dass die Konstanten in der .h-Datei definiert sind)

Es schien so einfach, als ich anfing, aber ich sehe keine gute Möglichkeit, eine global verfügbare kurze int-Konstante in einer Header-Datei zu definieren ... weiß jemand einen Weg, dies zu tun?

Danke!

    
Kira Smootly 12.03.2012, 13:56
quelle

2 Antworten

23

Deklarieren Sie die Konstanten in der Headerdatei mit extern :

%Vor%

dann in jeder, aber nur einer, .c -Datei die Definition:

%Vor%     
hmjd 12.03.2012, 14:02
quelle
0

Wenn Sie mit gcc kompilieren, können Sie den Schalter -ggdb3 hinzufügen, der gcc anweist, Makroinformationen (d. h. #define s) zu speichern, damit sie in gdb verwendet werden können.

    
Nathan Fellman 12.03.2012 14:10
quelle

Tags und Links