Что за х.. ерунда? LwIP 1.4.1, в lwipopts.h прописал #define LWIP_DEBUG 1 #define UDP_DEBUG LWIP_DBG_ON, есть в debug.h конструкция #ifdef LWIP_DEBUG
/** print debug message only if debug message type is enabled...
* AND is of correct type AND is at least LWIP_DBG_LEVEL
*/
#define LWIP_DEBUGF(debug, message) do { \
if ( \
((debug) & LWIP_DBG_ON) && \
((debug) & LWIP_DBG_TYPES_ON) && \
((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
LWIP_PLATFORM_DIAG(message); \
if ((debug) & LWIP_DBG_HALT) { \
while(1); \
} \
} \
} while(0)
#else /* LWIP_DEBUG */
#define LWIP_DEBUGF(debug, message)
#endif /* LWIP_DEBUG */
И собирается без предупреждений по ветке, где LWIP_DEBUG не определён. Но если я в этом же файле debug.h перед конструкцией вписываю
#define LWIP_DEBUG 101
тогда собирается по первой ветке условия, и пишет варнинг при сборке о переопределении. Только не говорите, что всё так и должно быть. :-/ А если всё же да - как надо?