gpt4 book ai didi

c - 在 void* 结构中初始化混合类型(常量) - 可能吗?

转载 作者:行者123 更新时间:2023-11-30 17:55:05 24 4
gpt4 key购买 nike

当我将单个元素初始化为 void 结构时,它工作正常:

void* CMD_ARRAY[] = 
{
{"+++\r"},
{"+++\r"},
{"+++\r"},
};

但是,当我尝试向结构中添加更多元素时,即:

void* CMD_ARRAY[] = 
{
{"+++\r" , 4, 1300},
{"+++\r" , 4, 1300},
{"+++\r" , 4, 1300},
};

这会导致错误:

expected a "}"

第一个示例中的单个元素与结构体的结构(也被视为元素)之间有什么区别?

如何实现混合类型的 void 结构的初始化?

更新:所以我知道编译器不知道如何处理相同元素中的不同类型。有没有一种方法可以动态定义这些类型(即使用强制转换),而无需实际定义此定义之外的结构(即使用结构数组)?

最佳答案

我建议编译器无法猜测有关隐式结构声明的某些细节。例如,您的编译器如何猜测我希望下面示例中的 yshort

struct foo { char *x; short y; unsigned int z; };

void* CMD_ARRAY[] =
{
&(struct foo){"+++\r" , 4, 1300},
&(struct foo){"+++\r" , 4, 1300},
&(struct foo){"+++\r" , 4, 1300},
};

这可以扩展为易读性:

void* CMD_ARRAY[] = 
{
&(struct { char *x; short y; unsigned int z; }){"+++\r" , 4, 1300},
&(struct { char *x; short y; unsigned int z; }){"+++\r" , 4, 1300},
&(struct { char *x; short y; unsigned int z; }){"+++\r" , 4, 1300},
};

编辑:除了易读性的成本之外,请考虑如果您决定在更高级别更改结构会发生什么。您必须在较低级别进行大量查找/替换。这对你来说听起来很甜蜜吗?

关于c - 在 void* 结构中初始化混合类型(常量) - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14545925/

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