У меня следующая ситуация:
void func ()
{
TEST_MACRO(....., ret_type)
..........
}
some_ptr* func2()
{
TEST_MACRO(....., ret_type)
..........
}
int func3()
{
TEST_MACRO(....., ret_type)
..........
}
У меня 3 типа функций.В каждой функции я должен выполнить проверку диапазона для одной и той же переменной (локальной переменной).
В зависимости от УСПЕХА / ОТКАЗА, я должен выполнить обработку ошибок в макросе:
TEST_MACRO()
{
// FAILURE
if (ret_val == VOID_TYPE)
{
return;
}
else if (ret_val == RET_PTR)
{
return NULL;
}
else /* ret_val = INT */
{
return FAILURE;
}
}
но, в конечном счете, весь код препроцессора попадет в одну и ту же функцию.
Problem:
int func3 ()
{
// Entire Error Handling
if (..)
return;
else if(..)
return NULL;
else
return FAILURE;
}
Это НЕ возможно, но реализовать ОДНУ ЖЕ ФУНКЦИОНАЛЬНОСТЬ, т. Е. Выполнить проверку диапазона локальной переменной SIMILAR,использование 3 разных макросов (по одному для каждого типа возвращаемого значения) не кажется правильным.
Может кто-нибудь предложить мне какой-нибудь хороший способ справиться с такой ситуацией?