19

int x私は C ファイルで変数を定義しますextern int x:

私の質問は、他のファイルのどこで宣言すればよいですか?

  1. すべての機能の外で、

    // in file a.c:
    int x;
    
    // in file b.c:
    extern int x;
    void foo() { printf("%d\n", x); }
    
  2. それを使用する関数内で?

    // in file b.c:
    void foo() {
       extern int x;
       printf("%d\n", x);
    }
    

私の疑問は次のとおりです。

  • どちらが正しいですか? または
  • 両方が正しい場合、どちらが優先されますか?
4

3 に答える 3

19
  1. どちらも正しいです。

  2. どちらが優先されるかは、変数の使用範囲によって異なります。

    • 1 つの関数でのみ使用する場合は、関数で宣言します。

      void foo() 
      {
           extern int x;   <--only used in this function.
           printf("%d",x);   
      }
      
    • ファイル内の複数の関数で使用される場合は、グローバル値として宣言してください。

      extern int x;   <-- used in more than one function in this file
      void foo()
      {
          printf("in func1 :%d",x);   
      }    
      void foo1() 
      {
          printf("in func2 :%d",x);   
      }  
      
于 2013-08-20T06:00:13.670 に答える