|
|
Appropriate use of __STDC__ produces a header file that can be used for both old and new compilers:
header.h:The following function uses prototypes and can still be compiled on an older system:struct s { / ... / };
#ifdef __STDC__ void errmsg(int, ...); struct s f(const char ); int g(void); #else void errmsg(); struct s f(); int g(); #endif
struct sThe following is an updated source file (as with choice 3 above). The local function still uses an old style definition, but a prototype is included for newer compilers:#ifdef __STDC__ f(const char p) #else f(p) char p; #endif { / ... / }
source.c:#include <header.h> typedef / ... / MyType; #ifdef __STDC__ static void del(MyType ); / ... / #endif static void del(p) MyType p; { / ... / } / ... /