【发布时间】:2012-09-11 14:29:41
【问题描述】:
例如,我有这个代码。
#include <stdlib.h>
#include <stdio.h>
#define array_size 3
typedef struct {
int array[array_size];
} TEST;
void printout(TEST *p, int element) {
printf("element: %i\n", p->array[element]);
}
int main(void) {
TEST *p;
p = malloc(sizeof(TEST));
p->array[0] = 5;
printout(p, 0);
return 0;
}
但我想根据用户输入分配"array_size"。
如果我尝试这样做,编译器会显示 "variably modified ‘array_size’ at file scope"。那么,我是否正确,做我想做的事情的唯一方法是将所有内容移至 main()..?
它工作得很好,但是将structs and functions declarations 保留在文件范围内似乎,你知道的,很整洁。
【问题讨论】: