这是一个正常的错误,只会发生一个空白的方法吗?我使用了定制的Makefile btw。
case MODE: //mode is just an enum stackoverflow
printf("");
char temp = '5';
CSftp.c:335:9:错误:需要表达式char temp = '5';
删除printf("");会导致出现错误。或者这是一个遥远问题的征兆。
发布于 2020-04-02 08:17:57
在没有被封闭的{..}
块正确限定作用域的情况下,不应该在case
中声明变量。一个很好的解释可以在here找到。在switch语句之前声明char temp
,或者将case的代码括起来。
选项1:
char temp;
switch(condition){
...
case MODE:
temp = '5';
...
}
选项2:
switch(condition){
...
case MODE:
{
char temp = '5';
...
}
case NEXT:
...
}
发布于 2020-04-02 08:34:50
GCC 9.3有一个更容易理解的错误消息:
标签只能是语句的一部分,并且声明不是语句
也就是说,C的语法简单地禁止了这一点,因为case
标签需要附加到语法语句中,而C中的声明不是语句。但是复合语句就是语句,这就是{…}
围绕整个事情工作的原因。
发布于 2020-04-02 08:31:44
如果您想在这种情况下声明变量,请在此处添加代码块:
switch(x)
{
case MODE: //mode is just an enum stackoverflow
{
printf("");
char temp = '5';
}
}
https://stackoverflow.com/questions/60986989
复制相似问题