返回变量类型

时间:2011-07-08 07:21:20

标签: c

是否可以使用函数或宏来返回变量类型?我需要实现类似条件typedef的东西。例如:

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

这样我就可以:

foo(1) variable;

注意:上面只是一个伪代码。

3 个答案:

答案 0 :(得分:3)

你做不到。您可以在堆上分配对象并向其返回void *。或许你可以使用工会。

答案 1 :(得分:2)

您可以使用宏执行此操作,但前提是可以在编译时确定类型。否则你运气不好。

由于您正在尝试声明一个变量,因此必须在编译时知道foo

答案 2 :(得分:0)

这基本上是不可能的:在编写代码时需要知道C中的类型(这就是你必须首先编写它们的原因),并且函数在运行之前不能“返回”,在程序编译完成后发生。

你真的想做什么?为什么variable需要charint,具体取决于运行时发生的事情?如果我们将它变为int,那么Bad Thing(TM)会发生什么,然后我们永远不会为它分配一个不适合char的值?我们在堆栈上浪费3个字节?哦,亲爱的。