typedef int arr[10]
据我所知,上面的语句为int [10]定义了一个新名称
arr intArray;
相当于
int intArray[10];
但是,我对这样做的惯例感到困惑.在我看来,这
typedef int arr[10]
令人困惑,对我来说是一个明确的方式
typedef int[10] arr
即我将"int [10]"定义为一个名为arr的新类型
但是,编译器不接受这一点.
我可以问为什么?它只是C语言的惯例吗?
很早版本的C没有typedef
关键字.当它被添加到语言中时(1978年之前的某个时间),它必须以与现有语法一致的方式完成.
从语法上讲,关键字typedef
被视为存储类说明符,就像extern
或static
,即使它的含义完全不同.
就像你写的那样:
static int arr[10];
你写的:
typedef int arr[10];
将typedef
声明视为与对象声明类似的东西.不同之处在于它创建的标识符(arr
在本例中)是类型名称而不是对象名称.