【发布时间】:2013-11-16 02:37:03
【问题描述】:
我正在将代码从一种允许无类型、动态数组(例如 JavaScript)的语言编译为 C。在上面表示这些数组的最佳方式是什么?示例:
var array = [1,2,"test",[1,2]];
array.push([5]);
请注意缺少适当的形状和大小。
由于缺乏适当的形状,我考虑将所有内容装箱在一个结构中,该结构将包含一个指向实际对象的指针。所以我可以有一个那个盒子的数组。 GCC 是否能够取消装箱,因此我没有性能损失,还是应该寻找替代解决方案?
由于缺少静态大小,我不确定最好的方法是什么。
【问题讨论】:
-
在 c++ 中 boost::variant 是一个常见的解决方案。如果 c++ 不是一个选项,您可能需要删除 c++ 标记
-
@Jesse 不错。不过,它会成为一个好的编译目标吗?
-
是的,我想没问题。
标签: javascript c++ c optimization compiler-construction