相关疑难解决方法(0)

为什么不能在switch语句中声明变量?

我一直想知道这一点 - 为什么你不能在switch语句中的case标签之后声明变量?在C++中,您可以在任何地方声明变量(并且声明它们接近第一次使用显然是一件好事)但是以下仍然不起作用:

switch (val)  
{  
case VAL:  
  // This won't work
  int newVal = 42;  
  break;
case ANOTHER_VAL:  
  ...
  break;
}  
Run Code Online (Sandbox Code Playgroud)

以上给出了以下错误(MSC):

'case'标签跳过'newVal'的初始化

这似乎也是其他语言的限制.为什么会出现这样的问题?

c++ switch-statement

910
推荐指数
11
解决办法
26万
查看次数

编译错误:切换,"预期表达式之前"

切入追逐我已经重新创建了我的问题,因为它是相当自我解释的.

这符合,没有错误:

switch (n) {
    case 1:
        NSLog(@"");
        NSString *aStr;
        break;
    default:
        break;
    }
Run Code Online (Sandbox Code Playgroud)

这编译错误,它只缺少NSLog():

switch (n) {
    case 1:
        NSString *aStr;
        break;
    default:
        break;
    }
Run Code Online (Sandbox Code Playgroud)

它在编译时出现错误"NSString'之前的预期表达式 "

我在这里错过了什么吗?

iphone xcode cocoa objective-c xcode3.2

78
推荐指数
2
解决办法
4万
查看次数

我可以在Objective-C switch语句中声明变量吗?

我想我会失明,因为我无法弄清楚此代码中语法错误的位置:

if( cell == nil ) {
    titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero
        reuseIdentifier:CellIdentifier ] autorelease
    ];

    switch( cellNumber ) {
        case 1:
            NSString *viewDataKey = @"Name";
etc...
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我在最后一行的'*'标记之前收到错误:语法错误.

对不起这个基本问题,但我错过了什么?

objective-c switch-statement

57
推荐指数
2
解决办法
2万
查看次数

Objective-C Switch语句

可能重复:
在switch语句中声明变量

我很难让XCode让我在Objective-C中编写一个特定的switch语句.我很熟悉语法,可以像/ if块一样重写它,但我很好奇.

switch (textField.tag) {
        case kComment:
            ingredient.comment = textField.text;
            break;
        case kQuantity:
            NSLog(@""); // removing this line causes a compiler error           
            NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
            fmt.generatesDecimalNumbers = true;
            NSNumber *quantity = [fmt numberFromString:textField.text];
            [fmt release]; 
            ingredient.quantity = quantity;
            break;
    }
Run Code Online (Sandbox Code Playgroud)

我看不到语法错误,就好像我需要欺骗编译器允许这样.

objective-c switch-statement ios

10
推荐指数
1
解决办法
2万
查看次数

为什么我无法在switch-case块中实例化对象

我的代码有3个类n_hexa,n_octa,n_bin.代码在这里

switch(choice)
{
case 1: cin>>n; 
 n_hexa nx(n);
        break;
case 2: cin>>n; 
 n_octa no(n);
        break;
case 3: cin>>n;
 n_bin nb(n);
        break;
}
Run Code Online (Sandbox Code Playgroud)

在编译它时,为n_octa行提供消息" n_hexa的初始化 "

c++ block instantiation switch-statement

8
推荐指数
1
解决办法
2344
查看次数

在Switch语句之前的预期表达式

我在这段代码中遇到了编译错误:

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之前的预期表达式"为什么?

谢谢!

c objective-c

8
推荐指数
1
解决办法
5171
查看次数

为什么我的切换案例有时需要在Objective-C中使用大括号?

有时Xcode会在案例后的行上显示错误" 预期表达式 ".例如,Xcode指向带有红色箭头的UserContentViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch (indexPath.row) {
        case IndexVideo: 
            UserContentViewController* detailViewController = [[UserContentViewController alloc] initWithUser:self.user];
            [self.navigationController pushViewController:detailViewController animated:YES];
            break;

    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在我的案子周围放置括号,错误就消失了.首先,我想知道不使用大括号的问题是什么.在任何其他语言的情况下,我从未使用大括号.其次,为什么Xcode只会在极少数情况下抱怨我的案件?我无法辨别哪种类型的代码会触发此错误.

objective-c

3
推荐指数
1
解决办法
2945
查看次数

宏可以接受类型吗?

除非我的理解不正确,否则以下宏

int i; // for loop
const char* ctype; // proprietary type string
void** pool = malloc(sizeof(void*) * (nexpected - 1));
size_t poolc = 0;

#define SET(type, fn) type* v = (pool[poolc++] = malloc(sizeof(type)));         \
    *v = (type) fn(L, i)
#define CHECK(chr, type, fn) case chr:                                          \
    SET(type, fn);                                                              \
    break

switch (ctype[0]) {
  CHECK('c', char, lua_tonumber);
}
Run Code Online (Sandbox Code Playgroud)

应该扩展到

int i; // for loop
const char* ctype; // proprietary type string
void** pool = malloc(sizeof(void*) * (nexpected - 1));
size_t …
Run Code Online (Sandbox Code Playgroud)

c objective-c c-preprocessor

3
推荐指数
1
解决办法
55
查看次数

开关/箱子问题

如果我尝试创建case语句变量它给我搭建erroe任何人都可以给我介绍为什么这句法让我生成错误("'NSMutableArray的’前预期的表达").

iphone

1
推荐指数
1
解决办法
397
查看次数

在UIAlertView上获得一些错误

我不知道为什么会这样.它对我来说是正确的.我写了另一个UIAlertView,它看起来很好,一旦我删除了它,它就错误地写了我写的那个.我正在尝试按照本教程.

这是在我的viewcontroller.m中

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{


switch (result) {
        case MessageComposeResultCancelled:
            NSLog(@"Cancelled");
            break;
        case MessageComposeResultFailed:
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome To My App" message:@"This app will ... First you need to ..." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [alert show];
            [alert release];

        break;
    case MessageComposeResultSent:

        break;
    default:
        break;
}

[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

错误显示在它的许多行上,例如:在消息发送表达式的开头缺少"[".(如果我把它放在它想要在initWithTitle之后放另一个和另一个和另一个:)

下一个错误是:使用未声明的标识符'alert'(在show和release中说明)

知道发生了什么事吗?提前致谢.

iphone ios

1
推荐指数
1
解决办法
732
查看次数

为什么NSString initWithFormat不起作用.错误"预期表达式"

我有以下代码

NSString * myStr = [[NSString alloc] initWithFormat:@""];
Run Code Online (Sandbox Code Playgroud)

但在Xcode中,我有一个带有"预期表达式"的红色感叹号.

我解决了以下问题:

[NSString stringWithFormat:@"Number is not from 1 to 6. randomNumber is %d", randomNumber]
Run Code Online (Sandbox Code Playgroud)

但我想知道问题是什么.

图片 http://imgur.com/iICMhYc&S7QwhFT#1在此输入图像描述

谢谢

xcode objective-c switch-statement nsstring ios

1
推荐指数
1
解决办法
571
查看次数