Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!emory!hubcap!grimlok From: grimlok@hubcap.clemson.edu (Mike Percy) Newsgroups: comp.lang.c Subject: Re: Prototypes for macros? Message-ID: <8977@hubcap.clemson.edu> Date: 4 May 90 17:26:03 GMT References: <1990May4.162637.29981@laguna.ccsf.caltech.edu> Distribution: comp Organization: Clemson University, Clemson, SC Lines: 42 From article <1990May4.162637.29981@laguna.ccsf.caltech.edu>, by gleeper@tybalt.caltech.edu (Evan Manning): ] dan@kfw.COM (Dan Mick) writes: ] ]>In article <1990May3.202403.10140@laguna.ccsf.caltech.edu> gleeper@tybalt.caltech.edu (Evan Manning) writes: ]>>I ran into an interesting situation yesterday playing with my brand ]>>new Turbo C 2.0. I was trying to use it with all warnings and errors ]>>enabled, as I'd heard it claimed that this obviated all need for lint ]>>(At my previous job I got quite attached to PC-Lint from Gimpel but now ]>>it's my money so I thought I'd at least give Turbo a chance.) ]>> ]>>The problem emerged when I tried to use some functions (randomize & ]>>random) which are defined as macros in the headers. TC gave me a ]>>'no prototype in scope' warning and then some other error message I ]>>don't recall when I disabled the prototype warning. All problems ]>>vanished when I slavishly copied the definitions of the macros from ]>>the header. ]>> ]>>Is it a bug? Should macros have prototypes too? Will I have to worry ]>>about putchar et al? ] ]>Erm...if you had included the header, there wouldn't have been a warning, ]>since, after it was preprocessed, there would be no "function" randomize() ]>or random() to complain about. ] ]>#include ] ] I guess I should have mentioned that I'm not a rank amateur. All ] appropriate headers were included (including time.h for seeding off ] the time in randomize()) and these are the precise same headers needed ] to avoid warnings after manually expanding macros. My guess is that ] Turbo is checking for prototypes *before* expanding macros. Which ] sounds wrong to me. Has anybody encountered this before? Are you compiling with the -A flag set? The one that compiles in STDC mode? If so, a lot of the stuff in the header files is _not_ included, because it's not allowed to be there (by the ANSI standard). Check to see if the functions you are having prototype problems with are being excluded by a #if !__STDC__ test. Prototyping has saved me lots of work hunting things down, so I use it heavily, and have not had any problems. But I haven't compiled under STDC settings.