использование " 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 !");
}
Я полагаю,else
в конце концов имеет некоторое специальное использование.
вопрос> Что такое использование else
добавлено в конце этого определения макросов?
спасибо
1 ответов
макрос проверяет условие. Это должно быть условие true
, иначе он выдаст исключение. Если это правда, вы бы поставили скобки после того, как нормальный if
заявление.
вы бы использовали его так:
QL_REQUIRE (x != 0, "x must not be 0")
{
y = 100 / x; //dividing by 0 is bad
}
макрос subs в условии, и если это не удастся, он будет печатать данное сообщение. Если это не удастся, брекеты или один-лайнер форму после else. Логика просто немного перевернута, когда смотришь на все это. При использовании его, это как if
, но когда subbing его,if
и else
вроде как поменялись ролями.
это как сказать:
assert (x != 0 && "x must not be 0");
y = 100 / x; //dividing by 0 is bad