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'的計算結果爲真,'ukd_assert(expr)'將計算爲0.否則,它將調用'Assert :: failedAssert()',但仍評估爲0。 – scohe001