错误:为参数指定的存储类

SPB*_*SPB 66 c linux

我写了一个C代码.当我在Linux上编译它然后在头文件中它说出以下错误: storage class specified for parameter i32 , i8 依此类推

typedef int i32;

typedef char    i8;
Run Code Online (Sandbox Code Playgroud)

Fea*_*egs 232

有可能你在某个地方的头文件中忘记了分号.确保每行结束;

  • 谢谢你!就在现场 (2认同)

nmi*_*els 17

你有一些代码,可能在错误消息的全文中指出,它执行如下操作:

void function(static int foo)
Run Code Online (Sandbox Code Playgroud)

static是不允许的.它也可能是另一个存储类,如registerextern.


Anu*_*xit 11

我有相同的经历.问题出在头文件中的函数原型声明中,在函数声明结束时缺少一个半冒号.

该函数在错误代码段之前的编译日志中显示为"In function ..."

希望这可以帮助!!

  • @LPs我不同意 - 这是OP提出的问题的一个可能的答案(事实上,这是我需要的答案). (5认同)

小智 6

我曾经犯过同样的错误。解决方案是浏览文件并查找挂起的语句(如非闭括号或缺少分号)。通常它确实是一个微不足道的错误,但编译器会抱怨。

坏消息是它并不总是在正确的行(或什至在正确的文件中!)抱怨,好消息是在这些情况下它会说一些有用的东西,例如:

WRONGFILE.h: In function ‘FUNCTION_OF_ANOTHER_FILE_WRT_WRONG_FILE’"
WRONGFILE:line:col: error: storage class specified for parameter ‘param’ before. 
Run Code Online (Sandbox Code Playgroud)

去检查其他报告的文件。