Fehler: Speicherklasse für Parameter angegeben

Lesezeit: 3 Minuten

Benutzeravatar von SPB
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;

  • 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

Benutzeravatar von Featherlegs
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

Benutzeravatar von nmichaels
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.

Benutzeravatar von LDL
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).

Benutzeravatar von ahol967
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.

Benutzeravatar von igraczech
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

1421170cookie-checkFehler: Speicherklasse für Parameter angegeben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy