土地
Vala提供了枚举。但是这些不能在本地定义为子程序。常量可以在本地定义为子程序,但似乎不被视为静态表达式(所以伪常量)。Vala中的局部静态常量:可能吗?
的情况下
我与switch
陈述内置状态机来实现一些子方案。我使用了一些switch (state) { … }
,并且想要为case
语句使用一些常量,如case initial_state: { … }
。这是我相信的建议,因为它比使用case 0: { … }
中的文字常量更具可读性和可维护性。
我试图用const int initial_state = 0;
这样的声明在子程序中定义这些常量。但是Vala在每个案例陈述中都抱怨。我试图为这些状态定义一个枚举,如enum State { initial_state, … };
,但Vala拒绝这是一个语法错误,并且似乎只允许子程序之外的枚举声明。到目前为止,我必须将所有状态枚举定义为子程序的外部,否则要定义子程序中的常量,但必须使用if
结构,而不是switch
结构,因为它可以条件表达式为if
,不是静态的。
问题
待办事项瓦拉允许定义静态常量(的标量型)在当地以某种方式子计划?
何,我错过了,我没有注意到这条消息来自海湾合作委员会(将有另一个看看它)。所以如果我理解正确,我想我应该提交一份报告? – Hibou57 2013-02-20 13:02:11
我真的不知道它是否是一个错误。在这里,clang似乎比gcc更宽容,但gcc可能更严格地遵循标准。 – nemequ 2013-02-20 13:11:29
好吧,我会尝试将它作为LaunchPad中的Vala中的错误提交(也可能是C代中的错误),然后查看他们对此案的看法。他们可能会想出什么应该是正确的解释。 – Hibou57 2013-02-20 13:21:06