gpt4 book ai didi

c - c中的类型转换

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:20 24 4
gpt4 key购买 nike

我想知道是否可以获取我想要动态转换的类型。例如。

void *ptr;
typedef struct {
..
common_field;
..
} some;

typedef struct {
..
common_field;
..
} some_other;

现在我想知道是否可以对 ptr 进行类型转换以动态键入 some 或 some_other。

正是我想知道的是,是否有可能有一个宏,TYPE_CAST(comdition) 给我如下所示的类型:

(TYPE_CAST(condition)) ptr->common_field

应该等同于

((some *) ptr)->common_field or ((some_other *) ptr)->common_field

基于条件

以下内容不起作用,只是给出这个以便理解 c 比英语更清楚:

TYPE_CAST(condition) ((condition) ? (some *) : (some_other *))

可以按照这些思路做些什么吗?

谢谢。

最佳答案

这几乎是不可能的。表达式的类型在编译时确定;它不能依赖于任何执行时间条件。

给定一个您知道指向一种或另一种类型对象的 void*,您可以做类似的事情(我还没有测试过):

condition ? ((some*)ptr)->common_field : ((some_other*)ptr)->common_field

请注意,表达式的->common_field 部分必须重复;编译器必须知道 -> 运算符的左操作数的类型。

(根据上下文,if/else 语句可能更清楚。)

关于c - c中的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251071/

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