c - 初始化数组/结构的不熟悉语法,寻找解释

标签 c syntax c99 c11 aggregate-initialization

我正在翻阅一家名为OVP(类似于qemu的产品)的公司提供的“处理器建模指南”。其中有一段类似于以下内容的代码片段:

static or1kDispatchTableC dispatchTable = {
  // handle arithmetic instructions
  [OR1K_IT_ADDI] = disDefault,
  [OR1K_IT_ADDIC] = disDefault,
  [OR1K_IT_ANDI] = disDefault,
  [OR1K_IT_ORI] = disDefault,
  [OR1K_IT_XORI] = disDefault,
  [OR1K_IT_MULI] = disDefault
};

我以前从未见过这样的语法。 删除了与 C++ 无关的内容

目前我没有能力下载/查看他们的东西来查看任何东西是如何定义的,因此我的问题。如果你认识这种语法,你能权衡一下吗?


编辑

or1kDispatchTableCor1kDispatchTableCP 类型指针的 typedef , 但我仍然没有任何关于 or1kDispatchTableCP 的信息是。

最佳答案

好吧,假设你的第一行是一个错字,或者 or1kDispatchTableC 是一个数组类型,那么这实际上是一个数组声明,这看起来像一个 C11 显式初始化的数组。线路

[OR1K_IT_ADDI] = disDefault,

将元素 OR1K_IT_ADDI 初始化为 disDefault。这两个都需要是常量表达式——OR1K_IT_ADDI 可能是一个 #define 或一个枚举标记。

我很确定 C++11 不支持这种语法,尽管一些编译器(也支持 C11)可能支持它作为扩展。

从名字看,我猜这实际上是一个函数指针数组。

关于c - 初始化数组/结构的不熟悉语法,寻找解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729343/

相关文章:

c - 是否有推荐的方法来为 CUnit 测试设置环境变量?

java - Java 应用程序输入的良好输出格式是什么?

java - 通过 Java 连接到 MySQL 时出现 SQL 语法错误

mysql - PDO 语法错误,SQLSTATE[42000]

c - 使用自身地址初始化对象

c - 函数 'pool' 的隐式声明在 C99 中无效

c - 下推自动机的结构问题

c - 指针地址内存属于RAM还是Hard Drive?

c# - C# 关键字什么时候不保留?

使用 c89 和 c99 编译 gcc 4.4.2 默认为 c99 吗?