[basic.link]/6 (내 emphasiss는)왜 아래 예제에서 '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