【发布时间】:2020-09-10 13:16:38
【问题描述】:
我试图了解范围界定的不同之处:
//global scope
int size = 4;
int array[size]; // error: variably modified 'array' at file scope
int main(void) {
int buff[size]; // works!
}
如何使用变量作为数组大小在全局范围内不起作用但在 main 内部起作用?如果我改用宏就可以了。
另外,使用const 对大小有影响吗?
【问题讨论】:
-
在 c89 ansic 中,数组的大小必须声明为字母(在定义中或只是一个数字)。此代码不会在 c89 中编译
-
stackoverflow.com/questions/50858475/… 也许你正在寻找这个。
-
@SomaM。合理的欺骗。
-
@adam 提到 C89 而不是 C99、C11 或 C18 有什么特别的原因吗? OP 的代码适用于
main(void),所以 OP 大多使用 C99 或更高版本。
标签: c