2010-09-29 16 views

Odpowiedz

11

Oba są identyczne w C++, ale nie są takie same w C - w C, jeśli użyjesz typedef, otrzymasz kod, który jest zgodny między C i C++ (dzięki czemu można go swobodnie używać w pliku nagłówkowym, który może być użyty dla C albo C++). To jedyny powód, dla którego mogę go preferować.

+0

Dzięki za elucicdation. Zacząłem się martwić, czy był jeszcze jeden zakręt wokół C++, o którym myślałem, że wiedziałem, ale zupełnie nie wiedziałem (patrz: gimnastyka szablonowa, którą faceci w Boost robią tak łatwo) – mmr

+4

"Obaj są identyczni w C++" - warto wskazać że w niektórych implementacjach informacje debugowania mogą się różnić, ponieważ typedef jest efektywnym anonimowym lub losowo wyliczanym enum, więc informacje debugowania mogą dokumentować je jako takie, a nie jako "EEventID". To prowadzi niektórych ludzi do jeszcze brzydszego 'typedef enum Idn1 {...} Idn2;', z jednym zwykle tworzonym przez dodanie przedrostka lub przyrostka do drugiego :-(- to nie rozwiązuje dokładnie problemu, ale zapewnia pewne bardziej identyfikowalne idn. –

2

znalazłem jedną możliwą odpowiedź here: „No to dowiemy się z do języka C, w której jeśli używasz enum lub struktury, które są typy danych zdefiniowane przez użytkownika, należy określić słowa kluczowego enum lub struct podczas korzystania z niego.”

Być może Twój recenzent jest hardcore'owym koderem C i robi to automatycznie, z przyzwyczajenia.

0

Twój recenzent nie zna swojego C ze swojego C++.

2

Jeśli istnieje standard w firmie, może to być po prostu konsekwencja. Nawet jeśli nigdy nie używasz w C, nadal lepiej jest robić to w taki sam sposób wszędzie.

2

Typedef jest zbędny w C++.
W C jest to konieczne, jeśli chcesz zdefiniować zmienną typu wyliczeniowego, tak jak: EEventID event;, w przeciwnym razie musisz określić, że jest to wyliczenie: enum EEventID event;.