Linux下switch-case的case中不能定义变量——C语言意想不到的错误 代码 在linux下与.l文件和.y文件一起编译的时候发现以下代码报错(在windows的IDE中未发现异常) case: int res = factorial(x); if(res < 0){ printf("error"); return -1; } 解决办法 将int res的变量声明移出switch即可解决