C ++中的“一个定义规则”到底怎么说?我可以找到的唯一值得信任的情况是在C ++编程语言,第3版中。版,第9.2.3页。除此以外,该规则是否有任何正式定义?

评论

密切相关:从标准库中重新定义函数是否违反一定义规则?

#1 楼

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


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

[...]

每个程序应准确地包含每个非内联的一个定义
在该程序中使用的功能或对象;不需要诊断。
该定义可以在程序中显式显示
,可以在
标准或用户定义的库中找到,或者
(如果适用)隐式定义
(请参见12.1、12.4和12.8)。
内联函数应在使用它的每个翻译单元中定义。


评论


嗯,不止如此。它还涉及多个翻译单元。还有规则例外(这使得谈论它有点困难!)。干杯,

–干杯和健康。 -阿尔夫
2010年11月16日在8:13

确实,我必须引用整个页面,因此我选择了必不可少的内容。

–icecrime
10 Nov 16'8:14