我有兩個枚舉。在[C]中將`enum`轉換爲其他`enum`是否有效?
enum A { A1=1, A2=2 }
enum B { B1=1, B2=2 }
這是否符合C標準?
A a = A1;
B b = a;
(鏗鏘編譯好了,但是我不知道這是標準的或擴展行爲)
我有兩個枚舉。在[C]中將`enum`轉換爲其他`enum`是否有效?
enum A { A1=1, A2=2 }
enum B { B1=1, B2=2 }
這是否符合C標準?
A a = A1;
B b = a;
(鏗鏘編譯好了,但是我不知道這是標準的或擴展行爲)
這是有效的標準,但是C99規範提到,一些實現可能會生成一個警告:
實現可以產生在許多情況下,它們都沒有被指定爲該國際標準的一部分警告。以下是一些更常見的情況。
- 的值被給定爲比枚舉常數的分配其他枚舉類型是該類型的成員,或具有相同類型的枚舉變量或函數的值的一個對象,該返回相同的枚舉類型(6.7.2.2)。
我相信,在C枚舉基本int
s的個性。 (與C++完全不同的是C++)。因此,分配不同的enum
s仍然只與int
一起工作,因此它是合法的。但是,我並不是說這是推薦:)
它是有效的標準C但它是一個壞主意。請注意,它是而不是有效的C++。
有效 - 枚舉這是旨在幫助開發人員的語言功能。如果您不指定枚舉項值的值,它會自動生成。 From another language。