C++ 由该名称表示的声明和实体

C++ 由该名称表示的声明和实体,c++,C++,声明将一个或多个名称引入翻译单元。此名称表示指定的实体。但是,如果我们只是声明,而不是定义一个名称,会发生什么呢?例如: extern int a;//Declaration, not definition. What is the entity denoted by a? a=6;//Now a denote the enitity which has value equals to 6 如3/3所述: 名称是标识符(2.11)、操作员功能id(13.5)的使用, 文字运算符id(13.5.

声明将一个或多个名称引入翻译单元。此名称表示指定的实体。但是,如果我们只是声明,而不是定义一个名称,会发生什么呢?例如:

extern int a;//Declaration, not definition. What is the entity denoted by a?
a=6;//Now a denote the enitity which has value equals to 6
如3/3所述:

名称是标识符(2.11)、操作员功能id(13.5)的使用, 文字运算符id(13.5.8)、转换函数id(12.3.2)或 表示实体或标签(6.6.4,6.1)的模板id(14.2)


这意味着每个名称都根据定义表示某个实体。在您的情况下,该值未定义。

它将不会编译。由于声明了
external
,但没有在任何其他编译单元中声明任何实体,链接器将抛出
未解决的外部
错误。(对象将实际编译,但无法链接到可执行文件中)。

您的意思是项目中没有其他全局
int a
?在这种情况下可能会出错否?是的,没有全局int a。