Forum: Compiler & IDEs auf Struct in externer .c Datei zugeifen!


von EM-Gucker (Gast)


Lesenswert?

Hallo Leute

ich habe eine main.c und eine config.c

in der config.c steht folgende Struktur:
1
#include "config.h"
2
3
CONST(ConfigType) ConfigStruct = 
4
{
5
  0x01u, /* länge */
6
  0x02u  /* höhe */
7
};

Typendefinition ist in der config.h :
1
typedef struct
2
{
3
  uint32 laenge;
4
  uint32 hoehe;
5
} ConfigType;

Nun möchte ich von der main.c aus diese Werte lesen:
1
#include "config.h"
2
3
if( (ConfigStruct.Laenge = 1) || (ConfigStruct.Hoehe = 2))
4
{
5
 // ...
6
}




Beim Compilen sagt er mir jedoch immer:

Error: "left side of '.' or '->' is not struct or union"



Wo habe ich noch etwas vergessen?

Danke schonmal...

von Gelegenheitsposter (Gast)


Lesenswert?

So, zwei Sachen sind anzumerken:
- In der config.h fehlt noch abschließend:
1
extern const ConfigType ConfigStruct;
Damit wird das Feld nach außen hin bekannt gemacht.

- Die beiden Vergleiche in der main.c haben ein Problem. Du führst eine 
Zuweisung an Stelle eines Vergleichs ("==") durch. Du brauchst hier 
doppelte Istgleichzeichen.

Grüße
Rainer

von Gelegenheitsposter (Gast)


Lesenswert?

Hm, es waren doch drei Sachen. Eins und zwei siehe oben.
- Du musst Dich noch sklavisch an die Groß-/Kleinschreibung Deiner 
Bezeichner halten. Hierbei weichst Du bei "laenge" und "hoehe" ab.

von EM-Gucker (Gast)


Lesenswert?

na is do der Wahnsinn.. es geht scheinbar

das Extern war's

Fetten Dank!!

ja == ist klar, auch G/k Schreibung,
habs nur hier beim Abtipsen vergessen


Eins noch:

Warum eigentlich der Punkt
1
ConfigStruct.Laenge == 1

und nicht "->" ?
1
ConfigStruct->Laenge == 1


was müsste ich ändern, um es mit dem Pfeil zu benutzen?

von Stefan E. (sternst)


Lesenswert?

Den Pfeil könntest du benutzen, wenn ConfigStruct ein Pointer auf eine 
Struktur wäre.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.