¿Qué ventaja (si hay alguna) hay para usar typedef
en lugar de #define
en código C?¿Por qué usar C typedefs en lugar de #defines?
Como un ejemplo, hay alguna ventaja de utilizar
typedef unsigned char UBYTE
sobre
#define UBYTE unsigned char
cuando ambos pueden ser utilizados como
void func()
{
UBYTE byte_value = 0;
/* Do some stuff */
return byte_value;
}
Obviamente, el pre-procesador intentará expande un #define
donde sea que vea uno, lo que no ocurriría con un typedef
, pero eso no me parece que sea una ventaja o desventaja particular; No puedo pensar en una situación en la que el uso no genere un error de compilación si hay un problema.
Quoth el preprocesador: "Abusar de mí, abusame de mí ... ¡Hazme sentir querido!" +1 –
Abuso un poco el preprocesador, pero no para los tipos a menos que no haya otra forma. (Lo necesité * una vez * en los últimos 20 años al escribir código para hacer un manejo de enteros multiplataforma de 64 bits. Eso fue sorprendentemente complicado con los compiladores disponibles en ese momento, y terminé con más #ifdefs de los que tendría preferido). –
También funcionan los tipos de puntero ... – hugomg