Create custom #warning flags

2020-02-14 03:44发布

问题:

I'm building a commercial app, and we are using some GPL code to help us along.

How can I add #warning or #error statements so that when the code is built for debug, it warns, but when we build for release it throws errors?

I can do:

#warning this code is released under a CCL licensing scheme, see Source_Code_License.rtf
#warning this code is not LGPL-compliant
#warning this code was copied verbatim from a GP Licensed file

at the beginning of files, but can I do better? Is there a better way of tagging a file if it's included?

I'm using Objective-C++ with gcc or clang.

回答1:

Use #pragma message instead.



回答2:

#ifdef SOME_SYMBOL
#error "foobar"
#else
#warning "foobar"
#endif

NDEBUG has a slightly different purpose (controlling assert) and may be #undef and re-defined selectively (reincluding assert.h to effect the change), so it probably wouldn't be the right symbol. But it is a standard macro and could be used.

Note that #error is standard, but #warning is an extension.