オブジェクト指向の側面を利用して複数のデバイスを簡単にサポートできるように、C++ で C プログラムを書き直す作業を行っています。プログラムの一部は式評価器です。式には関数呼び出しを含めることができます。関数の構造は次のとおりです。
typedef struct {
char *name;
int argc;
void (*func) ();
} FUNCTION;
どういうわけか、 func は可変数の引数を渡すことができます。
RESULT *param[10];
if (Root->Function->argc < 0) {
/* Function with variable argument list: */
/* pass number of arguments as first parameter */
Root->Function->func(Root->Result, argc, ¶m);
} else {
Root->Function->func(Root->Result, param[0], param[1], param[2], param[3], param[4], param[5], param[6],
param[7], param[8], param[9]);
}
正直なところ、これがCでどのように行われるのかさえわかりません。説明は素晴らしいでしょう。C++でできますか?