带方括号的Typedef声明

时间:2015-08-18 14:09:29

标签: c typedef

这个表达意味着什么:

typedef char foo [FOO];

我只是纠正了方括号之间的表达式的含义。

2 个答案:

答案 0 :(得分:5)

它显示fooFOO数组的类型 - 许多char元素。在这种情况下,FOO是一个常量,定义为#define FOO 100

typedef int pair[2]; // Pair is an array of two ints.

答案 1 :(得分:4)

C Typedef具有基本形式typedef...type-declaration... 名称类型

在这种情况下,类型的名称是“foo”

类型本身是一个大小为FOO的char数组。

令人困惑的部分是括号之后的名称,所以在某种意义上,声明是在符号的两边,代表着类型。这是一个数组声明的怪癖,它们的名字后面可以有括号。所以,在这种情况下语法是这样的:

typedef...type-declaration... 名称类型 [(可选常量)]

如果您查看背面的原始C Programming Language,相关部分的内容如下:

  

类型名:
  type-specifier abstract-declarator

     

抽象声明符:
  空
  (摘要声明者)
  * abstract-declarator
  abstract-declarator()
  abstract-declarator [constant-expression opt ]

其中类型说明符可以是charinttypedef(如本例所示)。 5种抽象声明符中的最后一种是数组声明符,后面有括号。请注意,它是递归的;所以 abstract-declarator 可以是指向 abstract-declarator 的指针,依此类推。