我的情况是这样的:
aux_func.h
,其中包含函数int check_format_file(FILE * file);
aux_func.c
,实现了该功能问题是:在我的main.c
中,在哪里以及如何更好地声明FILE * f
?
#include aux_func.h
静态文件* f;
int main() { check_format_file(f); /* other stuffs */ return 0; }
main
?#include aux_func.h int main() { FILE * f; check_format_file(f); /* other stuffs */ return 0; }
我怀疑FILE *f
的正确可见性。
答案 0 :(得分:2)
在这两种情况下,您都将f
传递给唯一的函数check_format_file()
,因此无需将其设置为静态和全局。没有人会改变f
的价值(我希望如此,因为如果有人要修改它,那么你有更多的担忧而不是这个)以及你将它传递给另一个函数的方式,确保它将对函数可见。
变量应始终具有较小的范围。争论 这背后的是,每当你增加范围,你就会有更多 可能修改变量的代码,因此更复杂 在溶液中诱导。
很明显,如果使用全局变量,则首选 设计和实现自然允许。由于这个我 除非确实需要,否则不要使用全局变量。
答案 1 :(得分:0)
我会选择第二个选项,因为您似乎不会使用此函数中的变量f,这就是为什么没有理由将其设为全局。