0

可能重复:
为什么在 C/C++ 宏中有时会出现无意义的 do/while 和 if/else 语句?

#define QL_REQUIRE(condition,message) \
if (!(condition)) { \
    std::ostringstream _ql_msg_stream; \
    _ql_msg_stream << message; \
    throw QuantLib::Error(__FILE__,__LINE__, \
                          BOOST_CURRENT_FUNCTION,_ql_msg_stream.str()); \
 } else 

如何使用它:

void testingMacros1 (){
   double x =0.0;
   QL_REQUIRE (x!=0 ," Zero number !");
}

为什么宏最后会注入a else

4

0 回答 0