0

だから私は不定の引数に stdarg を使用しようとしています。int の場合はうまく機能しますが、今は char ポインターでこれを試しています。これは私のコードです:

    void updateValue(char *parameter, parameterTypes type, ...)
    {
       va_list arg_list;
       U32 value;
       char* stringValue;

       va_start(arg_list, type);
       value = va_arg(arg_list, U32);
       stringValue = va_arg(arg_list, char*);
       va_end(arg_list);
       printf("\n\n%s\n\n", stringValue);
    }

この関数を呼び出すときは、次を使用します。

    updateValue("name", stringType, "TestingVaArg");

最初の 2 つのパラメーターは、リスト内のパラメーターの名前とその型です。これは stdarg セットアップなしで機能するため、問題はありません。

4

2 に答える 2

3

引数を使用してtype、変数部分の型を把握することになっています。単一の引数のみを渡す場合、aと a の両方にアクセスしているようです。U32char*

次のようなものが必要です:

if( type == stringType )
{
  char *stringValue = va_arg(arg_list, char *);
  print("got string '%s'\n", stringValue);
}
else if( type == u32Type )
{
 /* ... */
}
于 2013-04-16T08:53:20.047 に答える