私はカスタム構造とさまざまな型(ints/strings /その他のカスタム構造...)の可変量の引数をとるC関数を持っています。構造のために、関数は、各引数がどの型であるかを、それを処理するために決定することができる。関数への可変パラメータの受け渡し
void doStuff(MyStruct *S,...){ <function code> }
"doStuff"に定数のn個の引数を渡すことができる別の関数が必要です。私。このような何か:
void useDoStuff(Mystruct *S, int n){ //lets say n=4
va_list arguments;
int i;
for(i = 0 ; i < n ; i++){
if(i%2) arguments.add(6); //example condition for the arguments
else arguments.add("Hello");
}
doStuff(S, arguments); // doStuff(S, "Hello", 6, "Hello", 6);
}
当然のことながら、この文句を言わない仕事、va_listのは、このように使用することはできませんので、は(大まかにしか必要とされているものを「見える化」にそれを使用しました)。残念ながら、構造体やdoStuff関数は変更できませんので、回避策を見つける必要があります。そのような回避策は存在しますか?
これはCではなく、C++です(Cには明示的な参照がありません)。これはXYの問題です。なぜ異質な引数リストを作成しようとしていますか? 'doStuff'の_actual_定義は何ですか? – Tim
はい、C言語での参照がないというのは正しいですか(例ではポインタの代わりになぜそれらを使用したのかわかりません)。どのようにしても、doStuffが何をしているかは実際問題ではありません。特定の条件を満たす不定数の定数を渡す必要があります。 –
引用: "当然va_listはこのように使うことはできません(必要なものを大まかに '視覚化するためにのみ使用する'ため)。つまり、va_listに「追加」機能がありますか? - いいえ。 –