Ich habe einen C-Code geschrieben. Wenn ich es unter Linux kompiliere, steht in der Header-Datei der folgende Fehler: storage class specified for parameter i32 , i8
usw
typedef int i32;
typedef char i8;
SPB
Ich habe einen C-Code geschrieben. Wenn ich es unter Linux kompiliere, steht in der Header-Datei der folgende Fehler: storage class specified for parameter i32 , i8
usw
typedef int i32;
typedef char i8;
Federbeine
Wahrscheinlich haben Sie irgendwo ein Semikolon in einer Header-Datei vergessen. Stellen Sie sicher, dass jede Zeile mit endet ;
Dies. Der Fehler wird wahrscheinlich in einer Quellcodedatei gemeldet, von der Sie sicher sind, dass Sie sie nicht berührt haben – aber diese Datei enthält zufällig die Header-Datei mit dem Syntaxfehler.
– Benutzer149408
31. Januar 2018 um 16:01 Uhr
Vielen Dank! Direkt vor Ort
– Toni Homedes i Saun
4. März 2021 um 8:02 Uhr
Die Menge an Fehlern, die von diesem einfachen Fehler gemeldet wurden, brachte mich fast dazu, mit dem Programmieren aufzuhören
– Nike
16. Juni 2021 um 3:09 Uhr
👏😀 🍻 Prost. so offensichtlich. aber ich habe es verpasst. Pfui
– klares Licht
5. Oktober 2021 um 22:49 Uhr
Danke @Featherlegs Ich hatte das gleiche Problem, dass ein Semikolon eine halbe Stunde oder mehr verschwendet hat.
– Fahad Mubeen
27. Dezember 2021 um 2:05 Uhr
Ich hatte die gleiche Erfahrung. Das Problem lag an der Deklaration des Funktionsprototyps in der Header-Datei, wo am Ende der Funktionsdeklaration ein Semikolon fehlte.
Die Funktion wurde in den Kompilierungsprotokollen als “In Funktion … ” direkt vor dem Fehlerausschnitt angegeben
Hoffe das hilft!!
@LPs Ich stimme nicht zu – dies ist eine mögliche Antwort auf das von OP gestellte Problem (tatsächlich war es die Antwort, die ich brauchte).
– Woodrow Barlow
5. November 2015 um 19:53 Uhr
nmichaels
Sie haben irgendwo einen Code, der wahrscheinlich im vollständigen Text der Fehlermeldung angegeben ist und ungefähr so ausführt:
void function(static int foo)
Das static
ist dort nicht erlaubt. Es könnte sich auch um eine andere Speicherklasse handeln, z register
oder extern
.
LDL
Ich habe diesen gleichen Fehler einmal gemacht. Die Lösung bestand darin, Dateien zu durchsuchen und nach ausstehenden Anweisungen zu suchen (wie eine nicht geschlossene Klammer oder ein fehlendes Semikolon). Normalerweise ist es wirklich ein trivialer Fehler, aber der Compiler beschwert sich.
Die schlechte Nachricht ist, dass es sich nicht immer in der richtigen Zeile beschwert (oder sogar in der richtigen Datei!). Die gute Nachricht ist, dass es in diesen Fällen etwas Nützliches sagt wie:
WRONGFILE.h: In function ‘FUNCTION_OF_ANOTHER_FILE_WRT_WRONG_FILE’"
WRONGFILE:line:col: error: storage class specified for parameter ‘param’ before.
Gehen Sie und checken Sie die andere gemeldete Datei ein.
Zum hinzufügen ;
: Ein weiterer Fall kann fehlen )
in einer Funktionszeigerdeklaration:
extern void init_callbacks(void (*init)(), void (*end());
(Fehlende schließende Klammer nach *end
).
ahol967
Wenn Sie den vim-Editor verwenden, können Sie das fehlende Semikolon leicht finden, indem Sie Folgendes eingeben:
/[^;]\s*$
…und dann nach oben/unten springen (mit N/n), bis die problematische Zeile gefunden wird.
igraczech
Ich hatte ein ähnliches Problem, während bei der statischen Zuweisung der Speicherklassenname fehlte. Z.B:
.h:
class MyClass {
static const int something;
}
.cpp:
const int something = 1; // returns error
const int MyClass::something = 1; // OK
Sie müssen etwas mehr Code zeigen.
– Marcelo Cantos
9. September 2010 um 13:31 Uhr
Warum kritisiert ihr alle? Wenn die Person wüsste, wo genau das Problem liegt, hätte sie es behoben, anstatt das Snippet zu posten. Oder möchten Sie 10 kLOC einfügen? Die Frage wird positiv bewertet, da es sich um ein häufiges und obskures Problem mit einer gut akzeptierten Antwort handelt.
– Vorac
6. Januar 2016 um 8:31 Uhr
Ich habe diesen Fehler bekommen, als ich träumte und eine memebr-Funktion als deklarierte
extern
in der Klassendefinition (rutscht verlegen ab, Wangen brennen)– Mawg sagt, Monica wieder einzusetzen
21. April 2017 um 9:54 Uhr