From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Meissner To: "Kaveh R. Ghazi" Cc: meissner@cygnus.com, amylaar@cygnus.co.uk, gcc@gcc.gnu.org, gdr@codesourcery.com Subject: Re: Silently checking whether diagnostics would occur Date: Thu, 14 Sep 2000 08:42:00 -0000 Message-id: <20000914114234.25834@cse.cygnus.com> References: <200009141530.LAA09532@caip.rutgers.edu> X-SW-Source: 2000-09/msg00312.html On Thu, Sep 14, 2000 at 11:30:49AM -0400, Kaveh R. Ghazi wrote: > > From: Michael Meissner > > > > Rather than returning an error value, you could have the parameter be > > an int pointer, and if the pointer is NULL, otherwise set the pointer > > to non-zero and return. Another way to write the function is to pass > > a function that writes the error messages, and for the case you don't > > want the error messages, have it record in a static about being called > > and return, and change the other callers to pass error or what have > > you for the function. > > One nit with passing in a function is that attribute printf doesn't > work on function pointers IIRC, so all the calls to the warning > function ptr would lose format checks. (Though I suppose that could > be fixed.) Sigh, that would have been cleaner since I could do > "#pragma poison warning" to make sure the function pointer parameter > was always used in preference to `warning'. Use a special purpose warning function then that has fixed arguments, instead of a general stdarg function. -- Michael Meissner, Red Hat, Inc. PMB 198, 174 Littleton Road #3, Westford, Massachusetts 01886, USA Work: meissner@redhat.com phone: +1 978-486-9304 Non-work: meissner@spectacle-pond.org fax: +1 978-692-4482