Проверка аргументов функции
От: syomin  
Дата: 24.07.07 12:34
Оценка:
Добрый день, обратил внимание, что во многих проектах я использую следующий макрос для проверки корректности параметров функций:

#define APP_THROW_INVALID_ARGUMENT_IF_FAIL(expression)                   \
do {                                           \
    using std::invalid_argument;                           \
    using std::string;                               \
                                           \
    if(!(expression))                               \
        throw invalid_argument(string(BOOST_CURRENT_FUNCTION) +           \
                       " : Условие '" #expression "' ложно");  \
} while(false)


Вместо APP в имени макроса подставляю название проекта (обычно — это библиотеки) — чтобы не было конфликтов имен. Макрос используется так:

void setSize(int width, int height)
{
    APP_THROW_INVALID_ARGUMENT_IF_FAIL(width >= 0);
    APP_THROW_INVALID_ARGUMENT_IF_FAIL(height >= 0);

    // ...
}


Как видите, все достаточно просто. Однако есть ряд вопросов:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.