たとえば、このコードがあります。
#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
、ファイルスコープを維持することは、きちんとしているように見えます。