2016-08-12 80 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

這是一般最好避免全局變量和使用參數而不是依賴全局變量將函數所需的信息傳遞給該函數。除此之外,你只能有一個全局變量;你可能有很多函數需要在不同的時間以不同的值調用這個函數。但是,很難判斷另一個函數是否依賴於全局變量的當前值。

所以,是的,顯式傳遞(指向)結構通常更好地引用全局變量 - 它更好地封裝了信息。

相關問題