gpt4 book ai didi

javascript - 将无类型数组编译为 C 的有效方法是什么?

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

我正在将代码从一种允许无类型的动态数组(例如 JavaScript)的语言编译为 C。在其上表示这些数组的最佳方式是什么?示例:

var array = [1,2,"test",[1,2]];
array.push([5]);

注意缺少适当的形状和大小。

由于缺乏适当的形状,我曾考虑将所有内容装箱在一个结构中,其中包含指向实际对象的指针。所以我可以有一个那个盒子的数组。 GCC 是否能够拆箱,这样我就没有性能损失,或者我应该寻找替代解决方案?

由于缺少静态大小,我不确定最好的方法是什么。

最佳答案

这通常是 union 的目的;至少,它们是最节省内存和时间的解决方案。使数组的每个条目成为一个具有两个成员的结构:一个标记数据类型的整数,以及一个包含您可能存储的所有可能类型的 union 。

例子:

struct typed_elem {
int type;
union {
int32_t i;
double f;
char *s;
struct typed_elem *a;
} value;
};

这将允许您的数组包含整数、 float ( double )、字符串或类似本身的其他数组。 type 成员将保存一个代码(您可能更喜欢使用 enum 而不是 int)来告诉您的程序是哪个成员 union 活跃。

关于javascript - 将无类型数组编译为 C 的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013949/

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