为什么我的开关盒不工作?/我如何修复这些构建错误?

时间:2015-09-06 16:03:09

标签: c build enums switch-statement

我是学生,我已经写出了这个代码(任务涉及控制一个自动门)我以为我把所有东西都排序了但是当我尝试构建它时它给了我一些错误。如果有人可以指出我正确的方向来修复它们会很棒!

User

它给出的错误是:

构建目标'目标1'

编译main.c ...

main.c(10):错误C25:'enum'附近的语法错误

main.c(11):错误C53:重新定义'state'

main.c(13):错误C25:'while'附近的语法错误

main.c(13):错误C25:'1'附近的语法错误

main.c(16):错误C103:'state':非法函数定义(缺少';'?)

目标未创建。

1 个答案:

答案 0 :(得分:0)

您似乎在C89模式下进行编译,您无法在任何地方进行变量声明(它已在C99标准中添加)。将state声明移到函数顶部。

或者,告诉编译器使用C99规则。对于GCC,可以通过在命令行中添加-std=c99选项来完成。

现在您的代码看起来像这样(我添加了评论):

void main(void) {
    DP2 = 0x0003;  /* Assignment, okay */
    ODP2 = 0x0000; /* Another assignment, okay */
    enum {closed, opening, open, closing} state;  /* Variable declaration, NOT okay */
    state = 1; /* Assignment, okay */

    ...
}

您需要在函数中放置变量声明

void main(void) {
    enum {closed, opening, open, closing} state;  /* Variable declaration, okay here */

    DP2 = 0x0003;  /* Assignment, okay */
    ODP2 = 0x0000; /* Another assignment, okay */
    state = 1; /* Assignment, okay */

    ...
}