Qual è il vantaggio (se esiste) di utilizzare typedef
al posto di #define
nel codice C?Perché utilizzare typedef anziché #defines?
Ad esempio, non v'è alcun vantaggio di utilizzare
typedef unsigned char UBYTE
sopra
#define UBYTE unsigned char
quando entrambi possono essere usati come
void func()
{
UBYTE byte_value = 0;
/* Do some stuff */
return byte_value;
}
Ovviamente il pre-processore tenterà di espandi uno #define
ovunque ne veda uno, cosa che non succederebbe con un typedef
, ma ciò non mi sembra un particolare vantaggio o svantaggio; Non riesco a pensare a una situazione in cui entrambi gli usi non comporterebbero un errore di compilazione in caso di problemi.
Qua il preprocessore: "Abuso di me, Abuso di me .. Fammi sentire voluto !!" +1 –
L'abuso del preprocessore lo faccio un bel po ', ma non per i tipi a meno che non ci sia altro modo. (Ne avevo bisogno * una volta * negli ultimi 20 anni quando scrivevo il codice per eseguire la gestione dell'intero cross-platform a 64 bit. Era sorprendentemente difficile per i compilatori disponibili al momento, e ho finito con più #ifdefs di quanti ne avrei avuti preferito.) –
Anche i tipi di puntatori di funzione ... – hugomg