前言
多写代码,才能发现问题,即使现成的代码,手打一遍也有收获,这不遇到一个很无语的问题。
问题及原因、解决方法见以下转载内容。
原创者:ChirlChen
博客地址:https://blog.csdn.net/qqmindyourwill/article/details/52815886
转载内容
-
问题描述:
平常写代码过程中常会遇到在switch-case中定义局部变量(如下面的示例中的“case ECOLOR_RED 代码1中定义的temp变量”),但是编译总是无法通过。之前看到书中提到过这个问题,但是好久没写C++,就忘了具体怎么回事,这次用到总算弄明白了。为了以后万一遗忘了方便查阅,特地记录说明。
switch(color)
{
case ECOLOR_RED:
int temp = 10; //1: case中定义局部变量 ERROR;
……
do something;
……
break;
case ECOLOR_GREEN:
{
int temp = 20; //2: case中定义局部变量 RIGHT;
……
do something;
……
}
break;
case ECOLOR_BLUE:
cout << "temp = " << temp << endl; //3: 使用前面定义的变量, ERROR
……
break;
default:
……
break;
}