【发布时间】:2012-01-14 04:12:30
【问题描述】:
我有以下情况:
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 个不同的宏(每个返回类型一个)似乎不是一个干净的方法。
有人可以建议我一些处理这种情况的好方法吗?
【问题讨论】:
标签: c function user-defined-functions