Interview Questions

What is the difference between using a typedef or a #define for a user-defined type?

C Interview Questions and Answers


(Continued from previous question...)

What is the difference between using a typedef or a #define for a user-defined type?

What's the difference between using a typedef or a #define for a user-defined type?

In general, typedefs are preferred, in part because they can correctly encode pointer types. For example, consider these declarations:

typedef char *String_t;
#define String_d char *
String_t s1, s2;
String_d s3, s4;

s1, s2, and s3 are all declared as char *, but s4 is declared as a char, which is probably not the intention.
#defines do have the advantage that #ifdef works on them. On the other hand, typedefs have the advantage that they obey scope rules (that is, they can be declared local to a function or block).

(Continued on next question...)

Other Interview Questions