1
我有下面的情況不同的數據類型:返回C功能
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;
}
這是不可能的,但要實現同樣的功能,即做對相似的局部變量範圍檢查,使用3個不同的宏(每個返回類型)似乎沒有成爲一個乾淨的方式。
有人可以建議我處理這種情況的一些好方法嗎?
比我的答案更好,但我會在此答案中添加使用類型指定宏。 – 2012-01-14 04:39:08
沒辦法。在這個特殊的例子中,類型特定的宏(C11並且還沒有得到廣泛支持)只會促進糟糕的設計。 – Dave 2012-01-14 04:43:10
謝謝我,我糾正了。我多年來一直沒有使用C語言,所以我的觀點並不是建立在當前的想法之上。 – 2012-01-14 04:47:27