ошибка: класс хранения указан для параметра - PullRequest
59 голосов
/ 09 сентября 2010

У меня написан C-код. Когда я компилирую его в Linux, в заголовочном файле он говорит следующая ошибка: storage class specified for parameter i32 , i8 и т. д.

typedef int i32;

typedef char    i8;

Ответы [ 7 ]

218 голосов
/ 01 декабря 2010

Скорее всего, вы забыли точку с запятой в заголовочном файле. Убедитесь, что каждая строка заканчивается на ;

16 голосов
/ 09 сентября 2010

У вас где-то есть код, вероятно, указанный в полном тексте сообщения об ошибке, который делает что-то вроде этого:

void function(static int foo)

static там не разрешено. Это также может быть другой класс хранения, например register или extern.

9 голосов
/ 07 сентября 2015

У меня был такой же опыт. Проблема была в объявлении прототипа функции в заголовочном файле, где в конце объявления функции отсутствовала точка с запятой.

Эта функция была указана в журналах компиляции как "В функции ..." непосредственно перед фрагментом ошибки

Надеюсь, это поможет !!

3 голосов
/ 29 июня 2013

Я однажды допустил эту же ошибку.Решение состояло в том, чтобы просмотреть файлы и найти ожидающие утверждения (например, закрытые скобки или пропущенную точку с запятой). Обычно это действительно тривиальная ошибка, но компилятор жалуется.

Плохая новость заключается в том, чтоне всегда жалуется на правильную строку (или даже в правильном файле!). Хорошая новость заключается в том, что в этих случаях говорится что-то полезное, например:

WRONGFILE.h: In function ‘FUNCTION_OF_ANOTHER_FILE_WRT_WRONG_FILE’"
WRONGFILE:line:col: error: storage class specified for parameter ‘param’ before. 

.

1 голос
/ 17 января 2018

Если вы используете редактор vim, вы можете легко найти пропущенную точку с запятой, набрав:

/[^;]\s*$

... и затем переходить вверх / вниз (с помощью N / n), пока не будет найдена проблемная строка.

0 голосов
/ 29 мая 2018

У меня была похожая проблема, но при ошибке отсутствовало имя класса хранения в статическом назначении.Например:

.h:
class MyClass {
   static const int something;
}

.cpp:
const int something = 1; // returns error
const int MyClass::something = 1; // OK
0 голосов
/ 09 марта 2017

Для суммирования на ;: в объявлении указателя функции может отсутствовать ):

extern void init_callbacks(void (*init)(), void (*end());

(отсутствует закрывающая скобка после *end).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...