On Wednesday 2 June 2010, Geert Janssens wrote: > On Wednesday 2 June 2010, Christian Stimming wrote: > > Zitat von Geert Janssens <[email protected]>: > > > Most of these are easily solved. But I hit this one now and I'm not > > > sure how to proceed. > > > > > > src/gnome/dialog-print-check.c contains this construct: > > > #define ENUM_CHECK_ITEM_TYPE(_) \ > > > _(NONE,) \ > > > _(PAYEE,) \ > > > > This is a real brainf'kd construct. Something like simulating > > templates but in C but with macros, even though macros are evil. It is > > defined in src/libqof/qof/qofutils.h and might seem so insanely smart > > at first sight, but due to the inherent evil of macros it won't work > > on a larger scale, as you have just encountered. (Note to self: Gosh, > > I really hate C today.) > > > > No, the _() is not the usual gettext macro here but instead it's the > > local name of the macro's argument. It > > > > > Can anyone explain to me how to interpret this construct ? And even > > > more importantly, if I can add the CHK_ prefix without unintended > > > side-effects ? > > > > Unfortunately no because the identifiers are used both as enum values > > and as their string representations and e.g. dialog-print-check.c line > > 942 relies on this conversion from the string representation to the > > enum value. > > Thanks for the explanation. So if I get this right, I could change the enum > values if I also changed ALL uses of the enum names as strings. I found > these strings in the checks definitions. > > > But couldn't the compiler error be fixed by #undef'ing DATE *before* > > these lines in dialog-print-check.c? > Unfortunately, #undef DATE right before the enum has no effect.
I may have to try a more invasive approach... Geert _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
