理解C 中的「odr-use」
在C 中,「一個定義規則」(ODR)的概念確保對於每個在多個編譯單元中聲明的實體,只存在一個定義。然而,確定何時需要定義可能會令人困惑。術語“odr-use”在這種情況下發揮作用。
根據 C 標準,變數或函數是 odr-used:
這個定義有點抽象,所以讓我們來簡化它。 Odr-use 本質上意味著實體的使用方式必須在程式中的某個位置進行定義。這包括實際用法,例如呼叫函數或存取變量,以及潛在用法,例如成為重載決策的候選者。
對於類別模板成員函數,它們僅被實例化(並因此定義)(如果它們是 ODR 使用的)。這意味著必須呼叫它們,或者必須使用虛擬成員函數來實例化類別本身。
標準依賴此原則來防止不必要的實例化。例如,std::list::sort函式需要operator
理解 odr-use 對於避免與遺失相關的錯誤至關重要定義和多個編譯單元中的多個定義。透過遵循這些規則,程式設計師可以編寫健全且可維護的 C 程式碼。
以上是什麼是 C 語言中的 ODR 使用以及何時需要定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!