[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