2010-09-29 7 views

Respuesta

11

Los dos son idénticos en C++, pero no son lo mismo en C - en C si utiliza typedef obtiene código que es compatible entre C y C++ (por lo que puede usarse libremente en un archivo de encabezado que podría usarse para C o C++). Esa es la única razón por la que puedo ver si lo prefiero.

+0

Gracias por elucicdation. Estaba empezando a preocuparme si había otra esquina de C++ que creía conocer, pero ignoraba por completo (ver: la gimnasia de plantilla que hacen los chicos de Boost tan fácilmente) – mmr

+4

"Los dos son idénticos en C++" - vale la pena señalar que en algunos casos la información de depuración de la implementación puede diferir ya que typedef está efectivamente en una enumeración anónima o aleatoria, por lo que la información de depuración puede documentarlo como tal en lugar de como "EEventID". Esto lleva a algunas personas al aún más feo 'typedef enum Idn1 {...} Idn2;', con uno típicamente formado al agregar un prefijo o sufijo al otro :-(- no resuelve el problema exactamente, pero proporciona más idn trazable. –

2

He encontrado una respuesta posible here: "Bueno, es relevante para el lenguaje C en el que si se utiliza una estructura enum o cuales son los tipos de datos definidos por el usuario, es necesario especificar la palabra clave o enumstruct mientras lo usa."

Tal vez su revisor es un codificador de C hardcore, y lo hace automáticamente, por costumbre.

0

Su revisor no conoce su C de su C++.

2

Si hay un estándar en la empresa, podría ser por coherencia. Incluso si nunca lo usa en C, es mejor hacerlo de la misma manera en todas partes.

2

El typedef es superfluo en C++.
En C es necesario si desea definir una variable de su tipo de enumeración así: EEventID event;, de lo contrario, habría tenido que especificar que es una enumeración: enum EEventID event;.

Cuestiones relacionadas