埋め込みシステムで実行する C コードを生成していますが、生成したいコードには多数のパラメーターを持つ関数の呼び出しが含まれています。これらのパラメーターの数は、関数を生成するときに常にわかっており、常に多数の入力配列と出力配列で構成されています。
現在のバージョンのコードでは、生成した C コードに次の形式の関数が含まれています。
void f(const double* x0, const double* x1, const double* x2, double* r0, double* r1);
この場合、3 つの入力配列と 2 つの出力配列があります。ただし、一般に、入力配列と出力配列の数は、数百または数千のように非常に大きくなる可能性があります。コードは人間が読むことを意図していないことに注意してください。
ここで、C 標準では最大 127 個の関数パラメーターのサポートのみが保証されていることを知りました。さらに、生成されたコードが組み込みシステムの厳密なコーディング標準に準拠することも望んでおり、ジェット推進研究所の C コードのコーディング標準では最大 6 つのパラメーターしか許可されていません。
では、最も効率的な方法で最大 6 つの関数パラメーターを使用して上記のコードを書き直すにはどうすればよいでしょうか? コードの読みやすさではなく、実行速度のみに関心があることに注意してください。
私の最初のアイデアは、上記の関数を次のように処理することです。
void f(const double* x[], double* r[]);
次に、このコードを次のように呼び出します (スレッドの安全性は問題ではありません)。
static const double* x[] = {x0, x1, x2};
static double* r[] = {r0, r1};
f(x,r);
これは良い考えですか?他のより効率的な代替手段はありますか?