Я использую следующий макрос для печати отладочной информации, которую я нашел в Интернете. Он отлично работает. Однако, я хотел бы включить-выключить отладочный печати для функции А при отладке функции B, которая вызывает функцию A. Я попытался #define NDEBUG
function A
#undef NDEBUG
но не удалось подавить печать в функции А.Отключение макросов DEBUG для определенной функции (NDEBUG)
Любая помощь будет очень оценили. Любые предложения по альтернативным способам решения задачи также приветствуются.
Благодаря ~ RT
#ifdef NDEBUG
/*
If not debugging, DEBUGPRINT NOTHING.
*/
#define DEBUGPRINT2(...)
#define DEBUGPRINT(_fmt,G ...)
#else
/*
Debugging enabled:
*/
#define WHERESTR "[file %s, line %d]: "
#define WHEREARG __FILE__, __LINE__
#define DEBUGPRINT2(...) fprintf(stderr, __VA_ARGS__)
#define DEBUGPRINT(_fmt, ...) DEBUGPRINT2(WHERESTR _fmt, WHEREARG, __VA_ARGS__)
#endif /* NDEBUG */
Hi Alok, Thankshis для ответа. Я не смог заставить это работать. Кажется, что единственный способ включить/отключить отладочные макросы - это NDEBUG // MY_DEBUG определено/не определено до определения макроса. Использование #define/#undef после того, как сам макрос был определен, по-видимому, не действует как переключатель. ~ rt – user151410
См. мое редактирование. Вы хотите определить MY_DEBUG и не определять NDEBUG, если хотите отладки. Если вы определите NDEBUG или не определите MY_DEBUG, отладки не будет. Все эти «определения» должны выполняться при компиляции, например: 'gcc -DMY_DEBUG file.c'. –