这个表达意味着什么:
typedef char foo [FOO];
我只是纠正了方括号之间的表达式的含义。
答案 0 :(得分:5)
它显示foo
是FOO
数组的类型 - 许多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 ]
其中类型说明符可以是char
,int
或typedef
(如本例所示)。 5种抽象声明符中的最后一种是数组声明符,后面有括号。请注意,它是递归的;所以 abstract-declarator 可以是指向 abstract-declarator 的指针,依此类推。