列舉的前向聲明,該功能允許我們推遲枚舉類型的完整定義,直到在程式碼的後面部分,在某些情況下是一個理想的功能。然而,在 C 中,直到引入 C 11 才支援此功能。
限制原因:
在 C 03 和之前的版本中,枚舉是隱式的根據其內容調整大小。這意味著編譯器需要知道完整的枚舉值集才能確定正確的儲存類型。由於前向聲明僅指定枚舉名稱,因此無法推斷枚舉的大小,因此被禁止。
C 11 前向聲明:
C 11引入了使用 enum 明確指定枚舉大小的概念:
enum Enum2 : unsigned int; // Legal in C++11, size explicity specified
此外,C 11 中引入的enum 類關鍵字還提供了一種轉發聲明枚舉的方法,因為它指派了預設值枚舉的“int”類型。
enum class Enum3; // Legal in C++11, default type is "int"
替代方法:
如果由於向後相容性問題或其他原因而無法進行前向聲明,則可以採用其他方法來實現類似的封裝:
結論:
透過明確指定枚舉大小,在 C 11 及更高版本中可以前向聲明枚舉。在早期版本的 C 中,可以採用替代技術來實現類似的封裝。
以上是C 枚舉可以向前聲明嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!