【发布时间】:2016-12-07 20:47:35
【问题描述】:
我遇到了以下代码,它以非标准方式在 C 中声明了 char * 数组:
/* Message Type description array */
char *msgType[M_LAST_MSG] =
{
[M_INIT_MSG] "Init",
[M_RESET_MSG] "Serdes Reset"
};
M_INIT_MSG、M_RESET_MSG 和 M_LAST_MSG 是枚举,对应的值为 0、1 和 2。
根据正式的C 文档,该数组中的变量是字符串(文字),那么以这种方式使用这些枚举的目的是什么?是否有任何文档支持它?
使用 ARM 编译 gcc 编译器 gcc-arm-none-eabi。
【问题讨论】:
-
您可能在初始化中缺少
=:[M_INIT_MSG] = "Init"等。搜索指定初始化程序。 -
不,我没有错过。答案已编辑。
-
谈论标准/非标准然后链接到 gcc 扩展可能不是一个好主意...但是链接页面中的内容不清楚?它是一个过时的 gcc 扩展,你读过这个页面吗?来自页面:“自 GCC 2.5 以来已过时但 GCC 仍然接受的另一种语法是在元素值之前写 '[index]',没有 '='。”跨度>
-
是的,我读过了,谢谢。这解释了我的问题。