【发布时间】:2012-09-04 03:30:59
【问题描述】:
当我阅读 c++ 03 标准(7.1.1 Storage class specifiers [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:另外,我如何理解标准中的声明,
给定实体的连续声明所暗示的链接应一致。也就是说,在给定的范围内,每个声明相同的对象名称或函数名称的相同重载的声明都应暗示相同的链接。但是,一组给定的重载函数中的每个函数都可以有不同的链接。
【问题讨论】:
-
等等,你在问哪些?请提出具体问题。
-
我列出的所有内容。谢谢。
标签: c++