2011-07-08 10 views
2

変数型を返す関数またはマクロを使用できますか?私は条件付きtypedefのようなものを実装する必要があります。例:可変型を返す

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

このような私ができること:

foo(1) variable; 

注:上記は単なる擬似コードです。

+1

C++では、テンプレートマジックで次のようなことを達成できます:-) –

+0

コンパイル時間またはランタイム? –

+0

私のCは錆びますが、 "return char"ですか?タイプCの一流の市民ですか? – phtrivier

答えて

3

これはできません。ヒープにオブジェクトを割り当て、void *を返すことができます。あるいは、おそらくあなたは組合を使うことができます。

2

マクロを使用してこれを行うことはできますが、コンパイル時に型を判別できる場合のみです。さもなければあなたは運がなくなります。

変数を宣言しようとしているので、コンパイル時にfooを知らなければなりません。

0

これは基本的に不可能です:コードが書かれた時点でC言語の型を知っている必要があります(そのため、最初に書き込む必要があります)これはプログラムがコンパイルされた後に起こります。

あなたは本当に何をしようとしていますか?実行時に発生する何らかの理由によってvariablecharまたはintのいずれかになる必要があるのはなぜですか? intにしても、それがcharに収まらない値に割り当てられることはありません。私たちはスタックに3バイトを無駄にしますか?まあ。

関連する問題