2010-09-29 61 views

回答

11

這兩者在C++中是相同的,但它們在C中不同 - 如果使用typedef獲得C和C++之間兼容的代碼(所以可以在頭文件中自由使用)可能用於C或C++)。這是我喜歡它的唯一原因。

+0

感謝您的洗脫。我開始擔心是否還有另一個關於C++的角色,我認爲我知道但完全不知道(參見:Boost中的傢伙很容易做到的模板體操) – mmr 2010-09-29 01:00:36

+4

「這兩者在C++中是相同的」 - 值得指出在某些實現中,調試信息可能會因爲typedef實際上是匿名或隨機命名的枚舉而有所不同,所以調試信息可以將其記錄爲「EEventID」。這導致了一些人甚至更醜陋的'typedef enum Idn1 {...} Idn2;',其中一個通常通過向另一個添加前綴或後綴來形成:-( - 它並不完全解決問題,但提供了一些更可追溯的IDN。 – 2010-09-29 01:14:37

2

我發現了一個可能的答案here:「那麼這是培訓相關,其中,如果你使用enum或結構是用戶定義的數據類型C語言中,你需要指定enumstruct關鍵字,而使用它。」

也許您的評論者是硬核C編碼器,他會自動執行,出於習慣。

0

您的評論者不知道他的C語言來自他的C++。

2

如果公司有一個標準,它可能只是爲了保持一致性。即使你從不使用C語言,在任何地方都以同樣的方式進行更好。

2

typedef是多餘的C++
C如果你想定義你的枚舉類型的變量,如:EEventID event;,否則你必須指定它是枚舉:enum EEventID event;