定义包括声明吗?

도라에*_*에몽1 0 c++

int a = 0;
Run Code Online (Sandbox Code Playgroud)

这段代码可以解读为:a 的声明 a 的定义,对吧?

use*_*570 5

权利的声明或权利的定义?

请注意,每个定义都必然是 C++ 中的声明,但反之则不然。也就是说,并非每个声明都是定义。

因此,

int a = 0; // A definition and hence also a declaration
Run Code Online (Sandbox Code Playgroud)

以上既是定义,也是声明。


另一方面,如果你要写:

extern int a; // This is a nondefining declaration
Run Code Online (Sandbox Code Playgroud)

上面的语句extern int a;是一个声明,不是定义(又名非定义声明


而且,

extern int a = 0; // This is a definition and hence also a declaration even when we have used extern!
Run Code Online (Sandbox Code Playgroud)

请注意,即使我们extern在上面的语句中使用了,初始化程序的存在也0使其成为一个定义,因此也是一个声明。

  • @AnoopRana [你刚才问的问题](/sf/ask/5057487081/)实际上是一个有用的路标。它在标题中明确提出了问题,这与目标不同,并且 SO 上似乎没有类似的问题标题。我建议取消删除该问题。 (2认同)