重複の可能性:
C 関数に対する「extern」キーワードの影響
さて、ここ数時間、extern キーワードの意味について多くのことを読みました。最後にもう 1 つ、私が情報を見つけることができずに私を悩ませていることがあります。私が理解している限り、extern
キーワードは基本的に、変数または関数が単なる宣言であり、どこかで定義されていることをコンパイラに伝えているため、それについて心配する必要はなく、リンカが処理します。
そして、これを入力するとコンパイラ(私はgcc 4.2.1を使用しています)によって生成された警告:
extern int var = 10;
これをサポートします。これextern
は宣言のみのはずなので正しくありません。
ただし、私を混乱させているのは、これを入力するときに警告などが表示されないことです。
extern int func() {return 5;}
これは定義であり、同じ警告を生成する必要がありますが、そうではありません。ここで見つけた唯一の説明は、定義がextern
キーワードをオーバーライドするということです。ただし、そのロジックに従って、変数定義である場合にオーバーライドしないのはなぜですか? または、キーワードを変数と一緒に使用すると、特別な意味がありますか?
誰かが私にこれを説明してくれたら、とてもありがたいです。ありがとうございました!