0
일부 C++ 코드를 이해하려고하는데이 코드는 나를 혼란스럽게합니다.특정 식에 대한 C/C++의 매크로 정의에 대한 질문
#ifndef NDEBUG
#define ukd_assert(expr) \
((void)((expr) ? 0 : (Assert::failedAssert(), 0)))
#else // NDEBUG
#define INSTANTIATE_ASSERT(fp)
#define ukd_assert(expr) ((void)0)
#endif // NDEBUG
누구든지이 해석 방법을 알려 줄 수 있습니까? 질문에 대한 코멘트에서 같이
특히 어떤 부분이 혼란 스럽습니까? – chris
나는 ((void) ((expr)? 0 : (Assert :: failedAssert(), 0))))가 무엇을하는지 모르겠습니다. 나는 그것이 failedAssert 함수를 호출하지만 많이는 없다는 것을 안다. – ANovice
삼항 연산자를 사용하고 있습니다. 'expr'가 true로 평가되면,'ukd_assert (expr)'는 0으로 평가됩니다. 그렇지 않으면'Assert :: failedAssert()'를 호출하지만 0으로 평가됩니다. – scohe001