2011-07-08 72 views
2

是否有可能有函數或宏返回變量類型?我需要實現像條件typedef一樣的東西。例如:返回變量類型

(var_type) foo (char a) 
    { 
     if (a == 1) 
      return char; 
     else 
      return int;  
    } 

使得我可以:

foo(1) variable; 

注:上面的僅僅是一個僞代碼。

+1

在C++中,你可以用模板魔法來實現這樣的功能:-) –

+0

編譯時間或運行時間? –

+0

我的C是生鏽的,但「返回字符」?是C類型的一等公民嗎? – phtrivier

回答

3

你不能那樣做。您可以在堆上分配對象並返回void *。或者也許你可以使用聯盟。

2

你可以用宏來做到這一點,但只有在編譯時才能確定類型。否則,你的運氣不好。

由於您試圖聲明變量,因此編譯時必須知道foo

0

這是根本不可能的:類型C,則需要在代碼編寫的時間是已知的(這就是爲什麼你必須把它們寫在所有擺在首位),和功能不能「迴歸」,直到它運行,這是在程序編譯完成後發生的。

你真的想做什麼?爲什麼你需要variable可以是charint,這取決於運行時發生的情況?什麼壞事(TM)發生,如果我們只是使它成爲int,然後我們永遠不會最終分配一個值不適合char?我們在堆棧上浪費3個字節?噢親愛的。