#ifdef vs #if for feature checks
Lubos Lunak
l.lunak at suse.cz
Fri Mar 15 08:58:36 PDT 2013
Hello,
I'd like to propose that we convert our
#ifdef HAVE_FOO
to
#if HAVE_FOO
The reason for this is that the sooner cannot tell a difference between the
FOO feature not being there and any mistake (such as typo in name or #include
<config_xxx.h> missing). As a practical example, I found out few days back
that there was some code in the KDE vclplug that was never enabled, because I
when writing it back then I added the necessary dmake stuff for the #define,
but later vcl was converted to gbuild using gbuild patches from OOo, which
didn't have it, so the feature was silently dropped.
If we use the #if HAVE_FOO form, then with -Wundef any such mistake will be
easily detected. It will also require adding #ifndef HAVE_FOO #define
HAVE_FOO 0 #endif to config_xxx.h files, and the actual conversion, but that
can be an easy hack.
The problem with this change is that there still may be some cases where
#ifdef is used, either because some system #defines work that way (so those
would be valid but different), or people would still use #ifdef out of habbit
or from AOO, which would then be broken, since the macro would be always
defined. This however still should be possible to check mechanically, while I
do not see a way to prevent the problem above.
Opinions on this?
--
Lubos Lunak
l.lunak at suse.cz
More information about the LibreOffice
mailing list