在C中,我想基于Variable将变量类型化为不同的变量。我该如何让它变得动态?像
贪婪的方式
if ( typecast_to_uint16 == 1 ) {
uint16 v = (uint16)val;
} else if (typecast_to_char == 1) {
char p = (char )val;
} else if (typecast_to_some_struct_a == 1) {
struct a b = (struct_a)val;
}
这是一种贪婪的方式,是否有任何优化或动态的方式,我可以直接类型化变量,如使用结构?
例如:
(type_cast_array[struct_a_index]) ret_val;
编辑问题以清除混淆..
答案 0 :(得分:0)
这不能在没有运行时检查的情况下完成,你必须自己做。
C是一种静态编译语言,不支持将类型作为第一类值进行操作。也就是说,您不能将变量的类型放在不同的变量中,例如间接地投射到那种类型。
这是因为操作值的实际机器代码是在编译时生成的,编译器必须知道事物的类型才能生成正确的指令。
正如评论中所提到的,tagged union通常是一种干净地模拟不同类型变量的方法。