是否可以使用函数或宏来返回变量类型?我需要实现类似条件typedef的东西。例如:
(var_type) foo (char a)
{
if (a == 1)
return char;
else
return int;
}
这样我就可以:
foo(1) variable;
注意:上面只是一个伪代码。
答案 0 :(得分:3)
你做不到。您可以在堆上分配对象并向其返回void *
。或许你可以使用工会。
答案 1 :(得分:2)
您可以使用宏执行此操作,但前提是可以在编译时确定类型。否则你运气不好。
由于您正在尝试声明一个变量,因此必须在编译时知道foo
。
答案 2 :(得分:0)
这基本上是不可能的:在编写代码时需要知道C中的类型(这就是你必须首先编写它们的原因),并且函数在运行之前不能“返回”,在程序编译完成后发生。
你真的想做什么?为什么variable
需要char
或int
,具体取决于运行时发生的事情?如果我们将它变为int
,那么Bad Thing(TM)会发生什么,然后我们永远不会为它分配一个不适合char
的值?我们在堆栈上浪费3个字节?哦,亲爱的。