Fehler C2275 mit struct

The_Rave

Mitglied
Hallo,

Weiß jemand was für ein Problem VC1.52 hiemit hat?

main.c

Code:
typedef struct
{
  int a;
  int b;
} myStruct;

void main (void)
{
  myStruct test1;
 
  ....
}

Ich hab immer diesen Fehler:

Code:
 error C2275: 'myStruct' : illegal use of this type as an expression
 error C2146: syntax error : missing ';' before identifier 'test1'
 error C2065: 'test1' : undeclared identifier
 
Gibt es denn einen bestimmten Grund, dass du so einen alten Compiler benutzt?
Auf neueren kann ich den Fehler nicht reproduzieren. Du könntest höchstens mal probieren, dass du es so schreibst:

C++:
typedef struct myStruct {
     int a;
     int b;
} myStruct;
 
Ehm erklärst du mir kurz was einfach komplett nicht an Std. der Sprache halten mit 16bit zu tun hat? Willst du nen Microcontroler steuern oder was?
 
Ehm erklärst du mir kurz was einfach komplett nicht an Std. der Sprache halten mit 16bit zu tun hat? Willst du nen Microcontroler steuern oder was?

Hm. Vielleicht nochmal von Anfang an lesen? Ich wurde gefragt warum ich den alten Compiler benutze und ich weiß selber daß mein Fehler nichts mit 16 Bit zu tun hat. Das Programm muss halt im Real Mode laufen. Jetzt weiß ich aber immer noch nicht wie ich mich an den richtigen Standart halte...

Jetzt mal zum Thema. Ich hab meine main.c jetzt mal in main.cpp umbenannt. Dann wird das fehlerfrei verarbeitet. Aber warum geht das nicht in C?
 
Ehm auch in C++ gibt u. gab es nie ein void main.

Nja du hast ne unbenannte Struktur/Klasse und legst dir darauf basierend nen Typ an ... Unter C++ kannst du dir das mitm typedef ganz sparen und unter c kannst auch einfach immer struct vor den typ schreiben, dann auch da ...
 
Ehm auch in C++ gibt u. gab es nie ein void main.

Nja du hast ne unbenannte Struktur/Klasse und legst dir darauf basierend nen Typ an ... Unter C++ kannst du dir das mitm typedef ganz sparen und unter c kannst auch einfach immer struct vor den typ schreiben, dann auch da ...

Jetzt die große Frage, warum ist die Struktur unbekannt wenn ich die erstellt habe?
 
So ich hab jetzt einfach mal was versucht. Ich leg mir jetzt meine Variable vom Typ myStruct in einer Hilfsfunktion an und rufe die in der main() auf. Dann wird fehlerfrei kompiliert, es funktioniert nur nicht direkt in der main...
 
Letzter Stand: Die Strukturvariable muss erstellt werden bevor irgendeine Funktion aufgerufen wird, also immer zu Anfang der Funktion. Sowas wie printf() reicht schon danach geht es nicht mehr.
 
Evtl. solltest du dir mal nen anderen Compiler holen? ^^ Da is ja NULL-Standard dabei ^^ ... Evtl. ist OpenWatcom was für dich ... da kannst auch noch 16bit mit kompilieren ...
 
Zurück