Why all this fuss about NULL vs 0? Just define a set of NUL's: #define INUL (int*)0 #define CNUL (char*)0 #define FNUL (struct foo*)0 and so on, whatever you need.