auf Struct in externer .c Datei zugeifen!

Gast #895893
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...
Gast #895894
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
Gast #895895
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.
Gast #895913
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren