编程时,我想将一个大文件(包含main函数)拆分为许多小文件,因此有一个常见的情况:小文件中的函数可以修改主文件中的var,所以我认为extern非常有用!
例如:
在main.c中
extern int i = 100;
Run Code Online (Sandbox Code Playgroud)
在小.c
extern int i;
fprintf(stdout, "var from main file: %d\n", i);
Run Code Online (Sandbox Code Playgroud)
我只是想知道我的理解是对的吗?
您必须更改一件事才能使其工作:extern int i = 100;在main.c中应该更改为int i = 100;
即使可以这样做,我也不认为这是一个好的设计.您提取的用于分隔文件的内容应该可以单独使用,而不需要知道内部的内容main.c.
这种重构的有用策略:首先移动数据,然后移动使用该数据的函数.也就是说,首先将i变量移动到small.c,然后移动使用的函数i.
如果要移动函数而不是数据,请尝试i作为参数传递,而不是使用extern声明来访问它.