【发布时间】:2011-05-05 08:42:35
【问题描述】:
以下编译失败:
typedef int arr[10];
int main(void) {
return sizeof arr;
}
sizeof.c:3: error: expected expression before ‘arr’
但是如果我把它改成
sizeof(arr);
一切都很好。为什么?
【问题讨论】:
-
sizeof 作为运算符在 ansi-c 中不可用
-
@Kostya:我的 K&R 副本(我拥有的对 C 语言的最早描述)非常遥远,我现在无法查看,但我 110% 确定它描述了 @987654323 @ 与今天的 C99 标准基本相同。
sizeof在 1989 年 C 被 ANSI 标准化之前可用。 -
@Grim 您的说法“sizeof 作为运算符在 ansi-c 中不可用”是错误的。 C90 有第 3.3.3.4 节“sizeof 运算符”。在 C99 中,这移至第 6.5.3.4 节。