gpt4 book ai didi

c - 基于参数的类型转换变量

转载 作者:行者123 更新时间:2023-11-30 19:35:49 25 4
gpt4 key购买 nike

在C中,我想根据变量将变量类型转换为不同的变量。如何使其动态化?喜欢

贪心法

    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 是一种静态编译语言,不支持将类型作为第一类值进行操作。也就是说,您不能将变量的类型放入不同的变量中,例如间接转换为该类型。

这是因为操作值的实际机器代码是在编译时生成的,编译器必须知道事物的类型才能生成正确的指令。

正如评论中提到的, tagged union通常是一种干净地对不同类型的变量进行建模的方法。

关于c - 基于参数的类型转换变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42021259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com