基于参数的类型转换变量
Typecast variable basing on parameters
在 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;
编辑问题以消除混淆..
如果没有运行时检查,这是无法完成的,您必须自己进行这些检查。
C 是一种静态编译语言,不支持将类型作为第一个 class 值进行操作。也就是说,您不能将变量的类型放在不同的变量中,例如间接转换为该类型。
这是因为操作值的实际机器代码是在 compile-time 生成的,编译器必须知道事物的类型才能生成正确的指令。
如评论中所述,tagged union 通常是一种干净地为不同类型的变量建模的方法。
在 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;
编辑问题以消除混淆..
如果没有运行时检查,这是无法完成的,您必须自己进行这些检查。
C 是一种静态编译语言,不支持将类型作为第一个 class 值进行操作。也就是说,您不能将变量的类型放在不同的变量中,例如间接转换为该类型。
这是因为操作值的实际机器代码是在 compile-time 生成的,编译器必须知道事物的类型才能生成正确的指令。
如评论中所述,tagged union 通常是一种干净地为不同类型的变量建模的方法。