我写了一个C代码。当我在Linux上编译它时,在头文件中它会显示以下错误:storage class specified for parameter i32 , i8等等
storage class specified for parameter i32 , i8
typedef int i32; typedef char i8;
7fhtutme1#
很有可能你在头文件的某个地方忘记了一个后缀。确保每行以;结尾
;
erhoui1w2#
我也有过同样的经历。问题出在头文件中的函数原型声明处,在函数声明的末尾缺少一个字符串。在编译日志中,该函数在错误代码段之前被指示为In function ...。
In function ...
ia2d9nvy3#
你在某处有一些代码,可能在错误消息的全文中指出,它做了这样的事情:
void function(static int foo)
static不允许在那里。它也可以是另一个存储类,如register或extern。
static
register
extern
brtdzjyr4#
我犯过一次同样的错误。解决方案是浏览文件并查找挂起语句(如非闭括号或丢失的括号)。通常这实际上是一个微不足道的错误,但编译器会抱怨。坏消息是,它并不总是在正确的行(甚至在正确的文件中)抱怨!)好消息是,在这些情况下,它会说一些有用的东西,比如:
WRONGFILE.h: In function ‘FUNCTION_OF_ANOTHER_FILE_WRT_WRONG_FILE’" WRONGFILE:line:col: error: storage class specified for parameter ‘param’ before.
去查一下另一个报告的文件。
jei2mxaa5#
在;上添加:另一种情况可能是函数指针声明中缺少):
)
extern void init_callbacks(void (*init)(), void (*end());
(*end后缺少右括号)。
*end
bvuwiixz6#
如果你使用的是Vim编辑器,你可以很容易地通过输入找到缺少的插件:
/[^;]\s*$
.然后向上/向下跳(用N/n),直到找到有问题的行。
bn31dyow7#
我有类似的问题,而错误是在静态分配中缺少存储类名称。例如:
.h: class MyClass { static const int something; } .cpp: const int something = 1; // returns error const int MyClass::something = 1; // OK
nkcskrwz8#
正如Mawg在评论中指出的那样,将类成员函数声明为extern可能会导致类似的问题。
8条答案
按热度按时间7fhtutme1#
很有可能你在头文件的某个地方忘记了一个后缀。确保每行以
;
结尾erhoui1w2#
我也有过同样的经历。问题出在头文件中的函数原型声明处,在函数声明的末尾缺少一个字符串。
在编译日志中,该函数在错误代码段之前被指示为
In function ...
。ia2d9nvy3#
你在某处有一些代码,可能在错误消息的全文中指出,它做了这样的事情:
static
不允许在那里。它也可以是另一个存储类,如register
或extern
。brtdzjyr4#
我犯过一次同样的错误。解决方案是浏览文件并查找挂起语句(如非闭括号或丢失的括号)。通常这实际上是一个微不足道的错误,但编译器会抱怨。
坏消息是,它并不总是在正确的行(甚至在正确的文件中)抱怨!)好消息是,在这些情况下,它会说一些有用的东西,比如:
去查一下另一个报告的文件。
jei2mxaa5#
在
;
上添加:另一种情况可能是函数指针声明中缺少)
:(
*end
后缺少右括号)。bvuwiixz6#
如果你使用的是Vim编辑器,你可以很容易地通过输入找到缺少的插件:
.然后向上/向下跳(用N/n),直到找到有问题的行。
bn31dyow7#
我有类似的问题,而错误是在静态分配中缺少存储类名称。例如:
nkcskrwz8#
正如Mawg在评论中指出的那样,将类成员函数声明为
extern
可能会导致类似的问题。