私はシンプルなlispスタイルのプリプロセッサ言語を研究しています。 APIでは、言語を使用して操作できるプリプロセッサに任意の寸法とサイズの配列を渡すことができるようにしたいと考えています。 現在、私は型の列挙型を持っています。多次元配列をC言語で格納する
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;
プリプロセッサ参照
は、上記の構造にそのvoid*
(Lispの用語でCDR)に変換され、タイプLT_ARRAY付きリスト原子です。私が問題を抱えているところでは、多次元配列にアクセスする方法を考え出すことです。私は、配列を横断するためにステップ値を計算することを考えましたが、渡されたすべての配列が連続的に割り当てられることを保証できますか?
何か助けていただければ幸いです。
単純にC++テンプレートを使用できませんか? – ch0kee