[basic.link]/6(私のemphasiss):なぜ以下の例で `extern`指定子を使用することを主張したのですか?
関数の名前は、ブロックスコープで宣言され、ブロックスコープのextern宣言で宣言された変数の名前が結合を有する。
...
static void f();
static int i = 0;
void g() {
extern void f(); // internal linkage
int i; // #2 i has no linkage
{
extern void f(); // internal linkage <--
extern int i; // #3 external linkage
}
}
[basic.link]/7:
...
namespace X {
void p() {
q(); // error: q not yet declared
extern void q(); // q is a member of namespace X <--
}
void middle() {
q(); // error: q not yet declared
}
void q() { /* ... */ } // definition of X::q
}
void q() { /* ... */ } // some other, unrelated q
矢印で指し示さextern
指定子は、非常に最初の文の段落の[basic.link]/6で強調与えられ、必要ではありません大胆な文字です。何か不足していますか?
@ShafikYaghmourこれは変数であり、関数ではありません。 – Barry