c - 枚举周围的方括号是什么意思?[枚举值]
问题描述
我目前正在研究适当的状态机,我发现这篇文章似乎正是我一直在寻找的内容: https : //aticleworld.com/state-machine-using-c/基于表的状态机表的理解过程我偶然发现了这段代码,在我看来它很难阅读。
所以这是我能做到的:
eSystemState 是一个类型定义的枚举,它指示当前状态。
eSystemEvent 是一个类型定义的枚举,它指示当前事件。
pfEventHandler 是一个类型定义的函数指针,返回 eSystemState。
afEventHandler 是返回 eSystemState 的函数指针的类型定义二维数组(受“last_State”和“last_Event”限制)。
接下来是每种事件类型的一些事件处理程序。然后开始主要,一些初始化,然后就到了。
之前定义的类型 afEventHandler 填充了内容,但是其中使用的操作对我来说是一个很大的谜。
我知道对于每个大括号,都会填充一个新的“行”,但是枚举周围的方括号是什么意思,为什么一个人显然可以为由此产生的任何东西赋值?
我知道枚举本质上是数字,我怀疑它(对我来说)是一种处理数组中特定元素的超级晦涩的方法。
我错了吗?
// Table to define valid states and event of finite state machine
static afEventHandler StateMachine = {
[Idle_State] ={[Card_Insert_Event]= InsertCardHandler },
[Card_Inserted_State] ={[Pin_Enter_Event] = EnterPinHandler },
[Pin_Eentered_State] ={[Option_Selection_Event] = OptionSelectionHandler},
[Option_Selected_State] ={[Amount_Enter_Event] = EnterAmountHandler},
[Amount_Entered_State] ={[Amount_Dispatch_Event] = AmountDispatchHandler},
};
解决方案
此语法适用于指定的初始化程序。它允许您初始化数组的特定元素。
方括号中的值是要初始化的数组元素的索引。在这种情况下,它是一个枚举值,但它可以是任何整数。
推荐阅读
- c# - 使用 OpenFileDialog C# WPF 将 PDF 复制到其他文件夹
- sql - 透视嵌套列(按列分组) - SQL Server
- grails - 服务器无法启动:没有这样的属性:类的 localHttpPort:org.grails.jetty.JettyServer
- javascript - 如何将 Webpack 4 SplitChunksPlugin 与 HtmlWebpackPlugin 一起用于多页应用程序?
- python - 无法从网站相应地获取两个字段
- url-rewriting - 为 Kentico 中特定页面类型的所有新实例设置 url 模式?
- node.js - Kubernetes 相当于 `docker run --init`
- r - 如何使用 docker run 更改容器内文件夹的权限?
- python - 在 Python 3 中使用和不使用 return() 时得到不同的结果
- ruby-on-rails - 触摸记录