On 2003.07.20 08:23, Bill Kendrick wrote:

Right now I have a program that will die if certain headers can't be found.

The issue of getting these headers has practically become an FAQ for
the libraries installed.
("You forgot to download the *-dev packages of the library, which
contains the headers!")


I'd like, if possible, GCC to barf with my OWN error, stating something along these lines, rather than just:

src/myprog.c:15: foo.h: No such file or directory


I realize I can spit out an error message using the C "#error" directive, but is there a simple (and portable) way of TESTING?

e.g.:

#SOME_IF-LIKE_DIRECTIVE_I_DON'T_KNOW_ABOUT

#include "somelib.h"

#else

    #error "Ya big dummy!  You need to install the 'somelib-dev'
package!"

#endif

Is there such a thing?  I'm actually realtively unfamiliar with all of
the C directives out there.
I've stuck to the typical "#define", "#ifdef", "#include" trio. ;^)

Doing something with #if (a la #if defined(...)) seems tempting, but there's no predefined macro to test for the existance of a file, and I know of no way to create one so that's out of the question. (See "Conditional Syntax" in the cpp TeXinfo manual for more information)


I don't think the header guards (the #ifndef/#define/#endif that is supposed to surround every header file) are necessarily portable, but you could try somehting like this:

#include "somelib.h"
#ifndef __SOMELIB_Hs_HEADER_GUARD__
  #error "Ya big dummy!..."
#endif

If "somelib.h" defines *documented* macros when it is defined, then this becomes portable when you test for one of the documented macros instead. This doesn't prevent #include from writing an error of its own, but at least the user sees your error too.

--
I usually have a GPG digital signature included as an attachment.
If you don't know what it is, either ignore it or visit www.gnupg.org
My PGP key was last signed 6/10/2003 please download my key again if
it is more recent than your copy. If you use GPG, *please* talk to
me to sign it. The key is keyID E2B2CAD1 on pgp.mit.edu

Attachment: pgp00000.pgp
Description: PGP signature



Reply via email to