J'ai un code C écrit. Lorsque je le compile sous Linux, dans le fichier d'en-tête, il indique l'erreur suivante: storage class specified for parameter i32 , i8
etc
typedef int i32;
typedef char i8;
Vous avez peut-être oublié un point-virgule dans un fichier d'en-tête quelque part. Assurez-vous que chaque ligne se termine par ;
Vous avez du code quelque part, probablement indiqué dans le texte intégral du message d'erreur, qui fait quelque chose comme ceci:
void function(static int foo)
Le static
n'y est pas autorisé. Il peut également s'agir d'une autre classe de stockage, comme register
ou extern
.
j'ai vécu la même expérience. Le problème était à la déclaration du prototype de fonction dans le fichier d'en-tête où un point-virgule manquait à la fin de la déclaration de fonction.
La fonction était indiquée dans les journaux de compilation comme "Dans la fonction ..." juste avant l'extrait d'erreur
J'espère que cela t'aides!!
J'ai encouru cette même erreur une fois. La solution était de parcourir les fichiers et de rechercher les instructions en attente (comme une parenthèse non fermée ou un point-virgule manquant.) Habituellement, c'est vraiment une erreur triviale, mais le compilateur se plaint.
La mauvaise nouvelle est qu'elle ne se plaint pas toujours sur la bonne ligne (ou même dans le bon fichier!) La bonne nouvelle est que dans ces cas, elle dit quelque chose d'utile comme:
WRONGFILE.h: In function ‘FUNCTION_OF_ANOTHER_FILE_WRT_WRONG_FILE’"
WRONGFILE:line:col: error: storage class specified for parameter ‘param’ before.
Allez archiver cet autre fichier signalé.
Si vous utilisez l'éditeur vim, vous pouvez facilement trouver le point-virgule manquant en tapant:
/[^;]\s*$
... puis sautez haut/bas (avec N/n), jusqu'à ce que la ligne problématique soit trouvée.
J'ai eu un problème similaire, alors que l'erreur manquait le nom de la classe de stockage dans l'affectation statique. Par exemple.:
.h:
class MyClass {
static const int something;
}
.cpp:
const int something = 1; // returns error
const int MyClass::something = 1; // OK
Pour additionner sur ;
: un autre cas peut être manquant )
dans une déclaration de pointeur de fonction:
extern void init_callbacks(void (*init)(), void (*end());
(parenthèse fermante manquante après *end
).