Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以下功能的联系是什么? 当我在阅读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_C++ - Fatal编程技术网

以下功能的联系是什么? 当我在阅读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

以下功能的联系是什么? 当我在阅读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,c++,C++,UPD:另外,我如何理解标准中的声明 一个给定实体的连续声明所暗示的联系应一致。也就是说,在给定的范围内,声明相同对象名或函数名的相同重载的每个声明都应暗示相同的链接。然而,一组给定的重载函数中的每个函数都可以有不同的链接 除非在全局范围内声明的独立函数或变量上使用静态,否则它们将具有外部链接 请注意,在函数上使用关键字inline,不会更改函数的链接 P>另一个重要的注意点是 const 变量在C++中有内部链接,不像C. 一个给定实体的连续声明所暗示的联系应一致。也就是说,在给定的范围内

UPD:另外,我如何理解标准中的声明

一个给定实体的连续声明所暗示的联系应一致。也就是说,在给定的范围内,声明相同对象名或函数名的相同重载的每个声明都应暗示相同的链接。然而,一组给定的重载函数中的每个函数都可以有不同的链接


除非在全局范围内声明的独立函数或变量上使用
静态
,否则它们将具有外部链接

请注意,在函数上使用关键字
inline
,不会更改函数的链接

<> P>另一个重要的注意点是 const 变量在C++中有内部链接,不像C.</P>
一个给定实体的连续声明所暗示的联系应一致。也就是说,在给定的范围内,声明相同对象名或函数名的相同重载的每个声明都应暗示相同的链接。然而,一组给定的重载函数中的每个函数都可以有不同的链接。”

一个声明向编译器引入一个标识符,以便编译器可以知道它的类型。在C++中,标识符可以按你想要的次数声明,例如:

void doSomething(int, double);         // External Linkage
extern void doSomething(int, double);  // External Linkage is explicitly mentioned 
引用的段落意味着相同标识符的所有此类声明应指定相同的链接。例如,以下内容无效:

void doSomething(int, double);        //External Linkage
static void doSomething(int, double); //Internal Linkage due to static
但是,同一函数的重载版本可以有不同的链接,因此以下内容是有效的:

void doSomething(int, double);
extern void doSomething(int, double);
void doSomething(double,int);

等等,你在问什么?请问一个具体的问题。我列出的所有问题。谢谢。