所以我想做的是在 file2.c 中使用 file1.c 中的变量。
我已经在这里看到了一些答案,但我仍然遇到与以前相同的错误。 (错误:在文件范围内被可变修改
)
我在 file1.c 上的内容是这样的:
extern int num = 0;
struct abc *do_something(int n){
num = n;
}
/*more code below*/
现在我想在 file2.c 上使用 num
。我有这个:
#include <something.h> /*which has file1.h inside*/
int num;
struct list_t list[num]; /*error here*/
/*code that uses the initialized list below*/
我尝试使用类似 #define test_num num
的东西,但它也不起作用。我需要该列表在 file2 上是“全局的”,以便我可以用不同的方法使用它。
最佳答案
你实际上有两个问题。第一个与您的错误相关的是,当编译器看到您的数组 list
的声明时,num
的值是未知。编译器不知道任何其他 translation unit (包含所有头文件的源文件),它只知道它当前正在处理的翻译单元。
第二个问题比较理论化,数组的大小在编译时是固定的,在运行时改变变量num
不会改变数组的大小.
第一个问题可以通过将num
的初始化移动到translation unit 来解决。实际使用的地方。哦,不要将它初始化为零,零大小的数组没有多大用处。
第二个问题可以通过使用指针和使用malloc
和realloc
的动态分配来解决。
关于c - 在不同文件中使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119355/