помилка: клас пам'яті, вказаний для параметра


78

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


7
Вам потрібно буде показати трохи більше коду.
Marcelo Cantos,

3
погане запитання, його слід оновити фактичним поганим кодом ..
RushPL

17
Чому ви всі критикуєте? Якби людина знала, де саме проблема, вона б її виправила, замість того, щоб розміщувати фрагмент. Або ви хочете вставити 10 kLOC? Питання проголосовано, оскільки це загальна таємнича проблема з прийнятною прийнятою відповіддю.
Vorac

1
Я отримав цю помилку, коли мріяв і оголосив функцію memebr, як externу визначенні класу ( сором'язливо зісковзує, щоки
палають

Відповіді:


270

Швидше за все, ви десь забули крапку з комою у файлі заголовка. Переконайтеся, що кожен рядок закінчується на;


Це. Про помилку, швидше за все, повідомляється в якомусь файлі вихідного коду, до якого ви впевнені, що не торкалися, але цей файл включає файл заголовка, який має синтаксичну помилку.
user149408

18

У вас десь є код, напевно вказаний у повному тексті повідомлення про помилку, який робить щось подібне:

Там staticзаборонено. Це також може бути інший клас сховища, наприклад registerабо extern.


18

я мав такий самий досвід. Проблема була в оголошенні прототипу функції у файлі заголовка, де в кінці оголошення функції відсутня крапка з комою.

Функція була вказана в журналах компіляції як "У функції ..." безпосередньо перед фрагментом помилки

Сподіваюся, це допомагає !!


6
@LPs я не погоджуюсь - це одна з можливих відповідей на проблему, представлену OP (насправді, це була відповідь, яка мені потрібна).
Вудро Барлоу

6

Я зазнав цієї ж помилки один раз. Рішенням було переглядати файли та шукати оператори, що очікують на розгляд (наприклад, незамкнуту дужку або відсутність крапки з комою.) Зазвичай це справді тривіальна помилка, але компілятор скаржиться.

Погана новина полягає в тому, що вона не завжди скаржиться в потрібному рядку (або навіть у потрібному файлі!). Хороша новина полягає в тому, що в цих випадках він пише щось корисне, наприклад:

Зайдіть і перевірте інший файл, про який повідомляється.


1

Щоб додати ;: інший випадок може бути відсутнім )у оголошенні покажчика функції:

(відсутня закриваюча дужка після *end).


1

Якщо ви використовуєте редактор vim, ви можете легко знайти відсутні крапки з комою, набравши:

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


0

У мене була подібна проблема, хоча під час помилки в статичному призначенні відсутнє ім’я класу сховища. Наприклад:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.