當我讀取C++ 03標準(7.1.1存儲類說明符[dcl.stc])時,下面有一些示例,我無法分辨每個連續聲明的鏈接是如何確定的?任何人都可以幫忙嗎?提前致謝!以下功能的關聯是什麼?
static char* f(); // f() has internal linkage
char* f()
{ /* ... */ } // f() still has internal linkage
char* g(); // g() has external linkage
static char* g()
{ /* ... */ } // error: inconsistent linkage
void h();
inline void h(); // external linkage
inline void l();
void l(); // external linkage
inline void m();
extern void m(); // external linkage
static void n();
inline void n(); // internal linkage
static int a; // a has internal linkage
int a; // error: two definitions
static int b; // b has internal linkage
extern int b; // b still has internal linkage
int c; // c has external linkage
static int c; // error: inconsistent linkage
extern int d; // d has external linkage
static int d; // error: inconsistent linkage
UPD:此外,我怎麼能理解標準的聲明,
通過連續的聲明給定實體應同意暗示的聯繫。也就是說,在一個給定的範圍內,每個聲明相同的對象名稱或者相同的函數名稱重載應該意味着相同的連接。但是,給定的一組重載函數中的每個函數都可以有不同的鏈接。
等待,那些你要問哪個?請提出具體問題。 –
我列出的所有人。謝謝。 –