我正在研究一种简单的 lisp 风格的预处理器语言。在 API 中,我希望用户能够将任何维度和大小的数组传递给可以使用该语言进行操作的预处理器。目前我有一个类型的枚举;
typedef enum LISP_TYPE
{
LT_UINT,
LT_FLOAT,
LT_ARRAY
...,
...
} _LISP_TYPE;
我很难找到一种有效且易于使用的方法来存储数组并访问它们。我专门用于数组的另一种结构;
typedef struct _lisp_array
{
LISP_TYPE type;
unsigned int length;
void* data;
} lisp_array;
当预处理器 See 是一个类型为 LT_ARRAY 的列表原子时,它会将其void*
(在 lisp 术语中的 cdr)转换为上述结构。我遇到问题的地方是弄清楚如何访问多维数组。我曾想过计算一个步长值来遍历数组,但我能保证所有传递的数组都将被连续分配吗?
任何帮助表示赞赏。