gpt4 book ai didi

c - stdarg.h 不处理字符指针

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:53 26 4
gpt4 key购买 nike

所以我一直在尝试将 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");

前两个参数是参数在列表中的名称和类型。这在没有 stdarg 设置的情况下工作,所以这不是问题。

最佳答案

您应该使用 type 参数来确定变量部分的类型。当只传递一个参数时,您似乎正在访问 两者 U32char*

你需要这样的东西:

if( type == stringType )
{
char *stringValue = va_arg(arg_list, char *);
print("got string '%s'\n", stringValue);
}
else if( type == u32Type )
{
/* ... */
}

关于c - stdarg.h 不处理字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com