由此名称表示的声明和实体

时间:2014-05-21 06:01:45

标签: 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

2 个答案:

答案 0 :(得分:0)

如3/3所述:

  

名称是标识符(2.11),operator-function-id(13.5)的使用,   literal-operator-id(13.5.8),conversion-function-id(12.3.2),或   template-id(14.2)表示实体或标签(6.6.4,6.1)。

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

答案 1 :(得分:0)

它不会编译。由于它被声明为external,但没有在任何其他编译单元中声明实体,链接器将引发unresolved external错误。 (object实际上会编译,但它不能在可执行文件中链接。)