2010-09-29 10 views

risposta

11

I due sono identici in C++, ma non sono gli stessi in C - in C se si utilizza typedef si ottiene codice compatibile con C e C++ (quindi può essere utilizzato liberamente in un file di intestazione che potrebbe essere usato per C o C++). Questa è l'unica ragione per cui posso vederlo per preferirlo.

+0

Grazie per la delucidazione. Stavo cominciando a preoccuparmi se ci fosse ancora un altro angolo di C++ che pensavo di conoscere ma che ignorava completamente (vedi: il modello di ginnastica che i ragazzi di Boost fanno così facilmente) – mmr

+4

"I due sono identici in C++" - vale la pena puntare che alcune informazioni di debug sull'implementazione possono differire in quanto il typedef è effettivamente un enum anonimo o casualmente chiamato, quindi le informazioni di debug possono documentarlo come tale piuttosto che come "EEventID". Ciò porta alcune persone a "typedef enum Idn1 {...} Idn2;', ancora più brutto, con uno tipicamente formato aggiungendo un prefisso o un suffisso all'altro :-(- non risolve esattamente il problema, ma fornisce alcuni più idn tracciabile. –

2

ho trovato una possibile risposta here: "Beh, è ​​relevent al linguaggio C, in cui se si utilizza una struttura enum o che sono tipi di dati definiti dall'utente, è necessario specificare la parola chiave enum o struct durante l'utilizzo."

Forse il tuo revisore è un codificatore C di tipo hardcore, e lo fa automaticamente, per abitudine.

0

Il tuo revisore non conosce la sua C dal suo C++.

2

Se c'è uno standard in azienda, potrebbe essere solo per coerenza. Anche se non lo usi mai in C, è sempre meglio farlo nello stesso modo ovunque.

2

Il typedef è superfluo in C++.
In C è necessario se si desidera definire una variabile del tipo enum in questo modo: EEventID event;, altrimenti si dovrebbe specificare che è un enum: enum EEventID event;.