是否有可能有函數或宏返回變量類型?我需要實現像條件typedef一樣的東西。例如:返回變量類型
(var_type) foo (char a)
{
if (a == 1)
return char;
else
return int;
}
使得我可以:
foo(1) variable;
注:上面的僅僅是一個僞代碼。
是否有可能有函數或宏返回變量類型?我需要實現像條件typedef一樣的東西。例如:返回變量類型
(var_type) foo (char a)
{
if (a == 1)
return char;
else
return int;
}
使得我可以:
foo(1) variable;
注:上面的僅僅是一個僞代碼。
你不能那樣做。您可以在堆上分配對象並返回void *
。或者也許你可以使用聯盟。
你可以用宏來做到這一點,但只有在編譯時才能確定類型。否則,你的運氣不好。
由於您試圖聲明變量,因此編譯時必須知道foo
。
這是根本不可能的:類型C,則需要在代碼編寫的時間是已知的(這就是爲什麼你必須把它們寫在所有擺在首位),和功能不能「迴歸」,直到它運行,這是在程序編譯完成後發生的。
你真的想做什麼?爲什麼你需要variable
可以是char
或int
,這取決於運行時發生的情況?什麼壞事(TM)發生,如果我們只是使它成爲int
,然後我們永遠不會最終分配一個值不適合char
?我們在堆棧上浪費3個字節?噢親愛的。
在C++中,你可以用模板魔法來實現這樣的功能:-) –
編譯時間或運行時間? –
我的C是生鏽的,但「返回字符」?是C類型的一等公民嗎? – phtrivier