трудности с пониманием макроса утверждения - PullRequest
0 голосов
/ 03 августа 2020

Недавно я нашел этот фрагмент кода и немного запутался.

#ifdef LOCAL //  chk -> fake assert
    #define dbg(...) cerr << "Line(" << __LINE__ << ") -> [" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
    #define chk(...) if (!(__VA_ARGS__)) cerr << "Line(" << __LINE__ << ") -> function(" \
         << __FUNCTION__  << ") -> CHK FAILED: (" << #__VA_ARGS__ << ")" << "\n", exit(0);
#else
    #define dbg(...) 0
    #define chk(...) 0
#endif

Я четко понимаю, что делает отладка, но не знаю, что делает «chk» и как я должен это использовать в моем коде. Спасибо

1 Ответ

1 голос
/ 03 августа 2020

dbg выводит сообщение в cerr в каждом случае вместе с аргументами макроса, независимо от того, оцениваются ли аргументы как true или false

С другой стороны chk макрос выводит сообщение только в том случае, если аргументы макроса оцениваются как false, а затем вызывает exit

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