C++中的一个定义规则究竟是什么?

sha*_*oth 38 c++ definition

C++中的一个定义规则究竟是什么意思?我能找到的唯一值得信赖的事件是在C++编程语言中,第3版.编辑,第9.2.3节.除了那个规则之外,该规则是否有官方定义?

ice*_*ime 31

事实是标准(3.2一个定义规则):

任何翻译单元都不得包含任何变量,函数,类类型,枚举类型或模板的多个定义.

[...]

每个程序应该只包含该程序中使用的每个非内联函数或对象的一个​​定义; 无需诊断.该定义可以在程序中明确显示,可以在标准或用户定义的库中找到,或者(在适当的时候)隐式定义(见12.1,12.4和12.8).内联函数应在每个使用它的翻译单元中定义.

  • 呃,比这更多一点.它还涉及多个翻译单元.规则的例外(这使得谈论它有点困难!).干杯, (3认同)
  • 实际上,我必须引用整个页面,所以我选择了必要的. (2认同)