2010-11-16 19 views
33

C++中的一個定義規則是什麼意思?我能找到的唯一值得信賴的事情是在The C++ Programming Language,3rd。編輯,第9.2.3頁。除此之外,是否有規則的任何官方定義?C++中的一個定義規則究竟是什麼?

+0

強烈的相關性:[是否重新定義了標準庫中的函數違反了單定義規則?](http://stackoverflow.com/q/41670800/514235) – iammilind 2017-01-16 08:51:37

回答

30

事實是在標準(3.2一所定義規則):

未翻譯單元應包含任何變量的多個 多於一個的定義, 函數,類型,枚舉類型 或模板。

[...]

每個程序應包括每一個非內嵌 功能的恰好 一個定義或對象了在 該程序使用;不需要診斷。 該定義可以在程序中明確顯示爲 ,它可以在 標準或用戶定義庫中找到,或 (適當時)可以隱式定義(參見12.1,12.4和12.8) 。一個 內聯函數應在 中定義的每個翻譯單元中使用它的是 。

+3

呃,這有點多。它也涉及多個翻譯單元。和規則的例外(這使得談論它有點困難!)。乾杯, – 2010-11-16 08:13:26

+2

事實上,我將不得不引用整個頁面,所以我去了必不可少的。 – icecrime 2010-11-16 08:14:03