【问题标题】:Expected ‘;’ before ‘:’ token [closed]在“:”标记之前应为“;”[关闭]
【发布时间】:2014-03-20 01:55:00
【问题描述】:

我已经简化了我的问题,但仍然很困惑。我正在编译下面的代码:

cc -c test.c -g

尽管gcc 也是如此。 test.c中的代码是:

set_nds(value)
int value;
{
    int val;
    int one,zero;

    val = 1;
    switch(val)
        {
        1:
            one = 1;
            break;
        }

    return(1);
}

我得到错误:

> gcc -c test.c -g

test.c: In function ‘set_nds’:
test.c:11:4: error: expected ‘;’ before ‘:’ token
   1:
    ^

我一定是在做一些蠢事,但我不知道那是什么。

【问题讨论】:

  • 需要case 1:,而不是1:
  • case 在哪里? switch真的很想他的朋友们。
  • 为什么要使用 K&R 风格的函数定义?那些已经完全过时了。使用正确的函数原型。
  • 找到了;这太愚蠢了!我在用于确定哪种情况的常量前面缺少必要的“case”标记。请忽略。

标签: c gcc switch-statement


【解决方案1】:

您的代码中有几处可以修复。

首先,您的函数定义,您应该在 ( ) 中定义参数类型,并且还包括返回类型。

int set_nds(int value){
    // and so forth...
}

其次,switch 语句中需要case 关键字:

switch(val){
    case 1:
        one = 1;
        break;
}
// and so forth...

【讨论】:

  • 一个case 真的足以证明一个switch 的合理性吗?为什么不使用更紧凑的if 条件来代替?
  • @syb0rg OP 提到这是他的代码的简化版本,谁知道他实际有多少案例。
猜你喜欢
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2014-01-16
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多