2016-08-12 7 views
0

誰かがextern構造体をCの関数に渡した例を見てきました。これをパラメータとして渡さずにextern構造体を使用する代わりに、これを行う理由はありますか?このソリューションはよりカプセル化されていますか?Cで関数extern structを渡すのはなぜですか?

//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

グローバル変数を回避するために、一般的に優れていると関数によって必要とされる情報を、グローバル変数に依存するのではなく、パラメータを使用してその関数に渡すことができます。それ以外は、グローバル変数を1つしか持てません。異なる時間に異なる値を持つ関数を呼び出す必要のある多くの関数を持つことができます。しかし、別の関数がグローバル変数の現在の値に依存しているかどうかを知ることは難しいです。

したがって、構造体を明示的に渡すと、一般的にグローバル変数を参照する方がよくなります。情報をよりよくカプセル化します。

関連する問題