C语言 错误:为参数指定了存储类

63lcw9qa  于 2023-10-16  发布在  其他
关注(0)|答案(8)|浏览(160)

我写了一个C代码。当我在Linux上编译它时,在头文件中它会显示以下错误:storage class specified for parameter i32 , i8等等

typedef int i32;

typedef char    i8;
7fhtutme

7fhtutme1#

很有可能你在头文件的某个地方忘记了一个后缀。确保每行以;结尾

erhoui1w

erhoui1w2#

我也有过同样的经历。问题出在头文件中的函数原型声明处,在函数声明的末尾缺少一个字符串。
在编译日志中,该函数在错误代码段之前被指示为In function ...

ia2d9nvy

ia2d9nvy3#

你在某处有一些代码,可能在错误消息的全文中指出,它做了这样的事情:

void function(static int foo)

static不允许在那里。它也可以是另一个存储类,如registerextern

brtdzjyr

brtdzjyr4#

我犯过一次同样的错误。解决方案是浏览文件并查找挂起语句(如非闭括号或丢失的括号)。通常这实际上是一个微不足道的错误,但编译器会抱怨。
坏消息是,它并不总是在正确的行(甚至在正确的文件中)抱怨!)好消息是,在这些情况下,它会说一些有用的东西,比如:

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

去查一下另一个报告的文件。

jei2mxaa

jei2mxaa5#

;上添加:另一种情况可能是函数指针声明中缺少)

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

*end后缺少右括号)。

bvuwiixz

bvuwiixz6#

如果你使用的是Vim编辑器,你可以很容易地通过输入找到缺少的插件:

/[^;]\s*$

.然后向上/向下跳(用N/n),直到找到有问题的行。

bn31dyow

bn31dyow7#

我有类似的问题,而错误是在静态分配中缺少存储类名称。例如:

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

.cpp:
const int something = 1; // returns error
const int MyClass::something = 1; // OK
nkcskrwz

nkcskrwz8#

正如Mawg在评论中指出的那样,将类成员函数声明为extern可能会导致类似的问题。

相关问题