Path: utzoo!utgpu!news-server.csri.toronto.edu!clyde.concordia.ca!uunet!mtndew!friedl From: friedl@mtndew.Tustin.CA.US (Steve Friedl) Newsgroups: comp.lang.c Subject: selectively enabling prototypes Message-ID: <493@mtndew.Tustin.CA.US> Date: 12 Aug 90 16:13:57 GMT Organization: VSI*FAX Tech Ctr, Tustin, CA Lines: 43 Hi folks, I like to use function prototypes when possible, so in my header files I do something like this: #ifdef USE_PROTO # define PROTO(name, args) name args #else # define PROTO(name, args) name ( ) #endif extern PROTO(int printf, ( const char *, ... ) ); extern PROTO(char *strcpy, ( char *, const char * ) ); and so on (note: I know that printf and strcpy are in other headers, I'm just using familiar examples). I have been doing this for about two years and have been really happy with it. However, I have seen it done "the hard way": #ifdef USE_PROTO extern int printf(const char *, ... ); extern char *strcpy(char *, const char * ); #else extern int printf() extern char *strcpy(); #endif This looks like a real maintenance nightmare, but some of the people who do it are people I respect, so I gotta wonder if they know something that I don't know on this one. Are there any gotchas on doing it with the flavor of the way I've done it? Note: I do know that things like signal() won't fit into my mold, but these are so much in the minority that I don't mind doing those few "the hard way". Steve -- Stephen J. Friedl, KA8CMY / Software Consultant / Tustin, CA / 3B2-kind-of-guy +1 714 544 6561 / friedl@mtndew.Tustin.CA.US / {uunet,attmail}!mtndew!friedl If Larry Ellison says it, it must be true.