【发布时间】:2013-04-08 15:08:50
【问题描述】:
我实际上是在用 C 进行赋值,为了实现我的需要,我需要使用一个静态数组,比如说
static int array[LEN];
诀窍在于这个数组长度LEN 是在main() 中计算的。例如
static int LEN;
void initLen(int len) {
LEN = len;
}
static int array[LEN];
其中initLen 在main 中被调用,len 是使用用户提供的参数计算的。
这个设计的问题是我得到了错误
threadpool.c:84: error: variably modified ‘isdone’ at file scope
错误是由于我们无法使用变量作为长度来初始化静态数组。为了让它工作,我定义了一个LEN_MAX 并写了
#define LEN_MAX 2400
static int array[LEN_MAX]
这种设计的问题是我将自己暴露在缓冲区溢出和段错误中:(
所以我想知道是否有一些优雅的方法来初始化具有确切长度LEN 的静态数组?
提前谢谢你!
【问题讨论】:
-
什么是
isdone,它与您的阵列有什么关系?除了错误消息之外,您的问题中没有提到这个isdone变量。请改为提供SSCCE。 -
标签: c arrays variables initialization