Re: [vox-tech] Asking C compiler to test for #include file
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [vox-tech] Asking C compiler to test for #include file
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:
pgp00006.pgp
Description: PGP signature
|