土地
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