c ++中的一个定义规则(One definition rule in c++)
根据c ++标准:
任何翻译单元都不得包含任何变量,函数,类类型,枚举类型或模板的多个定义。
//--translation_unit.cpp--//
int a;
void foo()
{
int a; //Second defention of a. ODR fails.
}
你能解释一下ODR实际上是如何运作的吗?
According to the c++ standard:
No translation unit shall contain more than one definition of any variable, function, class type, enumeration type, or template.
//--translation_unit.cpp--//
int a;
void foo()
{
int a; //Second defention of a. ODR fails.
}
Can you explain me how ODR does work actually?
原文:https://stackoverflow.com/questions/23624844
更新时间:2019-12-11 06:16
最满意答案
这不会破坏规则,因为您定义了两个不同的变量。 它们具有相同的名称,但在不同的范围内声明,因此是单独的实体。 每个都有一个单一的定义。