C Макрос для определения набора макросов - PullRequest
1 голос
/ 11 июля 2020

У меня есть серия отладочных макросов, которые могут расширяться либо как вызовы функций, либо как операторы без операций. глобальные макросы, которые можно включать и выключать с помощью дополнительного #define. Я хочу сделать это на макроуровне, потому что я нахожусь в среде с чрезвычайно ограниченным размером кода.

Я знаю, что это незаконно, но надеюсь, что это показывает то, чего я надеюсь достичь:

#define MODULE_DEBUG(MNAME)                      \\
  #ifdef ##MNAME_DEBUG                           \\
    #define ##MNAME_DEBUG_LOG     DEBUG_LOG      \\
    #define ##MNAME_DEBUG_LOG_HEX DEBUG_LOG_HEX  \\
  #else                                          \\
    #define ##MNAME_DEBUG_LOG     NOOP           \\
    #define ##MNAME_DEBUG_LOG_HEX NOOP           \\
  #endif

В качестве примера использования это вызовет log ("foo"). Но это было бы N OOP, если бы DEBUG не был установлен или если BLE_DEBUG не был установлен.

#define DEBUG
#define BLE_DEBUG

MODULE_DEBUG(BLE);

BLE_DEBUG_LOG("foo");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...