Frage

Ich kompile einen einfachen .c in visuell c ++ mit Compile als C -Code (/TC) und ich erhalte diesen Compiler -Fehler

Fehler C2143:Syntax-Fehler :fehlen ';' vor 'Typ'

in einer Zeile, die eine einfache Struktur erfordert

 struct foo test;

Dasselbe gilt für die Verwendung der Typedef der Struktur.

Fehler C2275:'FOO':illegale Verwendung dieser Art als Ausdruck

War es hilfreich?

Lösung

Ich habe vergessen, dass Sie in C alle Ihre Variablen vor jedem Code deklarieren müssen.

Andere Tipps

Haben Sie in einer vorherigen Zeile versehentlich ein Semikolon weggelassen?Wenn die vorherige Zeile eine ist #include, müssen Sie möglicherweise woanders nach dem fehlenden Semikolon suchen.

Bearbeiten:Wenn der Rest Ihres Codes gültiges C++ ist, liegen wahrscheinlich nicht genügend Informationen vor, um das Problem zu ermitteln.Vielleicht könnten Sie Ihren Code an a posten Kleister damit wir das Ganze sehen können.

Im Idealfall fängt es beim Verkleinern zum Posten plötzlich an zu funktionieren und Sie haben dann das Problem entdeckt!

Da Sie bereits eine Typdefinition für die Struktur erstellt haben (weil Sie die Version „s1“ verwendet haben), sollten Sie Folgendes schreiben:

foo test;

statt

struct foo test;

Das funktioniert sowohl in C als auch in C++

Wie ist Ihr Strukturtyp definiert?Es gibt zwei Möglichkeiten, dies zu tun:

// This will define a typedef for S1, in both C and in C++
typedef struct {
     int data;
     int text;
} S1;

// This will define a typedef for S2 ONLY in C++, will create error in C.
struct S2 {
     int data;
     int text; 
};

C2143 besagt im Wesentlichen, dass der Compiler ein Token erhalten hat, das seiner Meinung nach im aktuellen Kontext illegal ist.Eine der Folgen dieses Fehlers besteht darin, dass das eigentliche Problem möglicherweise vor der Zeile liegt, die den Compilerfehler auslöst.Wie Greg sagte, denke ich, dass wir mehr von Ihrem Code sehen müssen, um dieses Problem zu diagnostizieren.

Ich bin mir auch nicht sicher, warum Sie glauben, dass die Tatsache, dass es sich um gültigen C++-Code handelt, hilfreich ist, wenn Sie herausfinden möchten, warum er nicht als C kompiliert werden kann?C++ ist (größtenteils) eine Obermenge von C, daher gibt es eine Reihe von Gründen, warum gültiger C++-Code möglicherweise nicht syntaktisch korrekter C-Code ist, nicht zuletzt, weil C++ Strukturen als Klassen behandelt!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top