首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在Objective-C switch语句中声明变量吗?

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

Stack Overflow用户
提问于 2009-07-12 04:22:53
回答 5查看 21.2K关注 0票数 57

我想我快看不见了,因为我找不出这段代码中的语法错误在哪里:

代码语言:javascript
运行
复制
if( cell == nil ) {
    titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero
        reuseIdentifier:CellIdentifier ] autorelease
    ];

    switch( cellNumber ) {
        case 1:
            NSString *viewDataKey = @"Name";
etc...

当我试图编译它时,我得到了一个错误:语法错误在最后一行的'*‘标记之前。

对于这样一个基本的问题,我很抱歉,但是我错过了什么?

EN

回答 5

Stack Overflow用户

发布于 2009-07-12 04:35:26

不能在case语句的开头声明变量。创建一个测试用例,只包含这些内容,您将得到相同的错误。

它与在代码块中间声明变量无关-甚至采用了一种标准,允许在case语句的开头不让GCC接受声明。看起来,GCC将case标签视为行的一部分,因此不允许在那里进行声明。

一种简单的解决方法是在案例的开头加一个分号,这样声明就不在开头了。

票数 20
EN

Stack Overflow用户

发布于 2009-07-12 04:42:23

在C中,你只能在任何非declare语句之前,在代码块的开头声明变量。

代码语言:javascript
运行
复制
{
   /* you can declare variables here */

   /* block statements */

   /* You can't declare variables here */
}

在C++中,您可以在需要的任何地方声明变量。

票数 4
EN

Stack Overflow用户

发布于 2016-12-23 04:38:19

您可以在switch语句中创建变量,但必须在块中创建它,以便定义该变量的作用域。

示例:

代码语言:javascript
运行
复制
switch(number){

    case 1:
        {
            // Create object here
            // object is defined only for the scope of this block
        }
        break;
    case 2:
        {
            // etc.
        }
        break;
    default:
        break;

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1115304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档