次の例を検討してください。
static int a;
extern int a; //OK -- what linkage does the a have now?
static int a;
int a; //ERROR
extern int a;
static int a; //ERROR
int a;
static int a; //ERROR
extern int a;
int a; //OK as expected
int a;
extern int a; //OK as expected
最初の例では問題がなかったのに、2番目の例では問題がなかったのはなぜですか。
ファイルスコープ変数(グローバルスコープ)に関する限り、これらには外部リンケージがあり、キーワードが指定されていない場合は静的期間があります。
ありがとうございました
関数のAFAIK、リンケージ、および保存期間は少し異なります。
編集:gcc 4.5.2 -Wall -pedantic --std=c99を使用してコンパイルしてみました
詳細:http ://c-faq.com/decl/static.jd.html 1番目の例もそこで機能しますが、2番目の例は機能しないことがわかります。しかし、何がそんなに違うのかわかりません。