我在这段代码中遇到了编译错误:
switch(event) {
case kCFStreamEventHasBytesAvailable:
UInt8 buf[BUFSIZE];
CFIndex bytesRead = CFReadStreamRead(stream, buf, BUFSIZE);
if (bytesRead > 0) {
handleBytes(buf, bytesRead);
}
break;
case kCFStreamEventErrorOccurred:
NSLog(@"A Read Stream Error Has Occurred!");
case kCFStreamEventEndEncountered:
NSLog(@"A Read Stream Event End!");
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
该行UInt8 buf[BUFSIZE];导致编译器抱怨"UInt8之前的预期表达式"为什么?
谢谢!
Lil*_*ard 16
Switch语句不会引入新的范围.更重要的是,根据C语言规范,常规语句必须遵循case语句 - 不允许变量声明.您可以;在变量声明之前放置一个,并且编译器会接受它,但是您定义的变量将位于switch的父变量范围内,这意味着您无法在另一个case语句中重新声明该变量.
通常,当在case语句中定义变量时,会为case语句引入一个新的作用域,如
switch(event) {
case kCFStreamEventHasBytesAvailable: {
// do stuff here
break;
}
case ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5171 次 |
| 最近记录: |