変数型を返す関数またはマクロを使用できますか?私は条件付き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
のいずれかになる必要があるのはなぜですか? int
にしても、それがchar
に収まらない値に割り当てられることはありません。私たちはスタックに3バイトを無駄にしますか?まあ。
C++では、テンプレートマジックで次のようなことを達成できます:-) –
コンパイル時間またはランタイム? –
私のCは錆びますが、 "return char"ですか?タイプCの一流の市民ですか? – phtrivier