gpt4 book ai didi

c - 在不同文件中使用全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:03 25 4
gpt4 key购买 nike

所以我想做的是在 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 来解决。实际使用的地方。哦,不要将它初始化为零,零大小的数组没有多大用处。

第二个问题可以通过使用指针和使用mallocrealloc 的动态分配来解决。

关于c - 在不同文件中使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com