声明在翻译单元中引入一个或多个名称。此名称表示特定实体。但是,如果我们只是声明,但没有定义名称,那么会发生什么?例如:
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
答案 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
实际上会编译,但它不能在可执行文件中链接。)