gpt4 book ai didi

c - 如何关联一组可变长度变量?

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:34 26 4
gpt4 key购买 nike

假设我有一组数组、字符串和常量:

const int a[]={0x01, 0x02};
const int b[]={2,0};
const int c=234;
const char* name="foo";

它们一起构成了对象 foo。

还有很多类似的对象,比如

const int a[]={0x04, 0x02, 0x03};
const int b[]={2,0,1};
const int c=1234;
const char* name="arfle";

在 C 中声明这些对象的最佳方式是什么? (特别是 gcc,我对 gcc-only 扩展、c99 等没有问题。)

我希望有这样的东西

thing[0]={a={0x04, 0x02, 0x03}, b={2,0,1}, c=1234, name="arfle"};
thing[1]={a={0x01, 0x02}, b={2,0}, c=234, name="foo"};

printf("%s", thing.name);

但是任何解决一般问题的巧妙方法都可以。我可以在任何数组上设置最大长度,但如果不需要的话,我会额外加分。我对预处理器欺骗完全没有问题,运行时初始化不会杀死我,尽管我宁愿尽可能避免它。

最佳答案

使用结构:

struct object
{
int *a;
int *b;
int c;
const char *name;
}

int arfle_a[] = { 4, 3, 2 };
int arfle_b[] = { 2, 0, 1 };
int foo_a[] = { 1, 2 };
int foo_b[] = { 2, 0 };
struct object thing[] = {
{ arfle_a, arfle_b, 1234, "arfle" },
{ foo_a, foo_b, 234, "foo" },
};

printf("%s\n", thing[1].name);

请注意,这种表示非常弱,最好(但更复杂)也用一个大小来表示整数 vector ,因为现在不可能知道 ab 在运行时。

更新:我修复了损坏的代码,抱歉。这就是我发布未经测试的代码所得到的。 :/

关于c - 如何关联一组可变长度变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849820/

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