2016-08-12 83 views
0

我见过一个例子,有人已经将外部结构传递给了C中的函数。有没有很好的理由这样做,而不是使用extern结构而不将它作为参数传递?这个解决方案是否更加封装?为什么要将extern struct传递给C中的函数?

//Test.h 
struct TEST_STRUCT 
{ 
    int member;             
}; 
extern struct TEST_STRUCT test_struct; 

//Test.c 
struct TEST_STRUCT test_struct = {0}; 

现在我可以决定这个test_struct传递给我的功能或设置在我的功能我的“成员”变量很舒服这样的:

test_struct.member = 10; 
+0

你在问什么?没有显示功能。你最喜欢的C书有什么不明白的地方?或者任何在线教程?你还发现自己还没有完全明白吗? – Olaf

+0

你是什么意思?你称之为“传球”?代码中没有函数调用 – qrdl

回答

1

这是一般最好避免全局变量和使用参数而不是依赖全局变量将函数所需的信息传递给该函数。除此之外,你只能有一个全局变量;你可能有很多函数需要在不同的时间以不同的值调用这个函数。但是,很难判断另一个函数是否依赖于全局变量的当前值。

所以,是的,显式传递(指向)结构通常更好地引用全局变量 - 它更好地封装了信息。

相关问题