【发布时间】:2021-01-12 20:39:05
【问题描述】:
为什么以下工作:
#define MAX 100
char MY_ARRAY[MAX];
但以下不是:
int MAX_2 = 200;
char MY_ARRAY_2[MAX_2];
这是来自Compiler Explorer 的示例。对我来说有趣的是在定义最终的 char 数组之前,事情看起来应该可以工作——所有整数都在数据中定义......
【问题讨论】:
-
C 的一个怪癖。它没有义务记住整数值,除非它们符合整数常量的定义。
-
全局数组的大小必须是一个常数。变长数组只能是局部变量。
-
const int是一个变量,只是不允许你重新分配它。 -
由于它不起作用,编译器会吐出一条错误消息。错误消息非常适合搜索。如果您没有找到所需的内容,最好在问题中包含错误消息,以便将来的读者更容易搜索。
标签: c constants declaration variadic-functions storage-duration