switch语句中声明变量报错:DEV C++编译问题排查
问题成因与修复方案
错误成因
DEV C++默认采用C89(ANSI C)编译标准,而C89对变量声明位置有严格限制:变量必须放在代码块({}包裹的范围)的最开头,不能直接在case标签之后声明变量——因为case本身不属于独立的代码块,编译器会判定这种变量声明位置违反语法规则。而大多数在线编译器默认启用C99或更高版本的标准,这些标准允许在代码块内任意位置声明变量,因此不会触发编译错误。
修复方法
方法1:给case分支添加代码块(兼容C89)
在case 2的代码外层加上花括号,形成独立的代码块,将变量声明放在块内:
case 2: { char *removed_name = remove_person(queue); // 这里写使用removed_name的后续代码 break; }
通过花括号创建局部作用域后,C89编译器会认可块内的变量声明位置。
方法2:修改DEV C++的编译标准为C99及以上
- 打开DEV C++,点击顶部菜单栏的「工具」→「编译选项」
- 在弹出的窗口中切换到「编译器」标签页
- 在「编译时加入以下命令」的输入框中添加
-std=c99(或-std=c11等更高标准) - 点击「确定」后重新编译代码即可。
内容的提问来源于stack exchange,提问作者Gurunath
相关产品推荐
相关产品推荐

