Abbiamo sicuramente usato typedef
s e #define
s una volta o l'altra. Oggi, mentre lavoravo con loro, ho iniziato a meditare su una cosa.
Considera le 2 situazioni seguenti per utilizzare il int
tipo di dati con un altro nome:
typedef int MYINTEGER
e
#define MYINTEGER int
Come sopra, in molte situazioni possiamo fare molto bene qualcosa usando #define, e fare lo stesso usando typedef, anche se i modi in cui facciamo lo stesso possono essere abbastanza diversi. #define può anche eseguire azioni MACRO che un typedef non può.
Sebbene il motivo di base per usarli sia diverso, quanto è diverso il loro funzionamento? Quando uno dovrebbe essere preferito rispetto all'altro quando entrambi possono essere utilizzati? Inoltre, uno è garantito per essere più veloce dell'altro in quali situazioni? (ad es. #define è la direttiva del preprocessore, quindi tutto viene eseguito molto prima rispetto alla compilazione o al runtime).