比如∶switch (a)
{
case 1:
CString str="ABCDE"; //这句编译有错误。请问为什么?
break;
case 2:
break;
....
}
{
case 1:
CString str="ABCDE"; //这句编译有错误。请问为什么?
break;
case 2:
break;
....
}
解决方案 »
- 如何截获浏览器的post报文内容?只用VC编写,不借助其他工具
- 这段程序为什么没有反映呢
- 如何让FormView上的ListCtrl跟FormView自动适应成一样宽?
- 物色一个技术/项目经理。机会给你,遗憾给我。
- 在exe程序的生成向导中有支持 socket的选项,选择就可以,在COM中没有啊 ,怎么办?
- 请问如何在win98下,利用ddk开发vxd设备驱动程序?与win95下一样么?
- SOS,哪位老大知道服务程序中如何获得窗口句柄啊?
- 我在看一本VC编程参考时,遇到遇到俩个函数CreateFileMap()和MapViewOfFile()??
- 一个const char的郁闷的问题
- 关于malloc
- 请问如何截取EditBox的KeyDown消息?
- <<Windows 网络编程技术 第二版>>国内有么?英文版,电子书都行.
str="abcde";就好使了.不知为什么.
str="abcde";就好使了.不知为什么.
{
case 1:
{
CString str="ABCDE"; //这句编译有错误。请问为什么?
}
break;
case 2:
break;
....
}加上花括号就没事了。这是因为如果a为2的话变量初始化语句将不被执行,
e:\rocklee's files\New Folder\myproject\test\test.cpp(11) : see declaration of 'str'
e:\rocklee's files\New Folder\myproject\test\test.cpp(15) : error C2361: initialization of 'str' is skipped by 'default' label
e:\rocklee's files\New Folder\myproject\test\test.cpp(11) : see declaration of 'str'因为你对str的定义可能会被跳过,是以后的错误出现错误吧
complier怎么分配空间?
单独的程序段。看这个例子:
int j=1;
switch(j) {
case 1:int b;break;
case 2:b=1;break;
}
可以编译。MSDN有下面的说明:
Compiler Error C2360
initialization of 'identifier' is skipped by 'case' labelThe specified identifier initialization can be skipped in a switch statement.It is illegal to jump past a declaration with an initializer unless the declaration is enclosed in a block.The scope of the initialized variable lasts until the end of the switch statement unless it is declared in an enclosed block within the switch statement.The following is an example of this error:void func( void )
{
int x;
switch ( x )
{
case 0 :
int i = 1; // error, skipped by case 1
{ int j = 1; } // OK, initialized in enclosing block
case 1 :
int k = 1; // OK, initialization not skipped
}
}
{
case 1:
int i;
case 2:
i=0;
}
如果按照whjpn (常盘平) 的想法,那么会有问题发生:
如果 k=1,则没什么
如果 k=2, 则i是谁定义的?这个问题怎么解决?所以对上述问题的修正办法是:
1.在switch外声明变量,这样case 2就不会有错误了
2.在switch中声明局部变量,局部变量的标志是用{}
即:case 1:
{ int i;
}
但是case 2就不能使用i了
这样讲明白了吗?如果明白,记得给分阿!
呵呵
编程快乐
你这样定义什么问题都没有,就有一个错误。
加括号!把case1后面的处理语句到break之前用一对括号括起来就没有问题了。
原因我也不清楚,但加了括号就没问题。