小编Rya*_*anR的帖子

可变参数函数传递很长但读取为 va_arg(argList, int)

我正在将 32 位应用程序转换为 64 位应用程序,我遇到的痛点之一是可变参数函数,它期望很长但可能传递一个整数,例如参数被硬编码为 -1 而不是 -1L源于 64 位长尺寸更改为 64 位。以这个示例代码为例:

#include <stdio.h>
#include <stdarg.h>

long varargsExample(int input, ...);

int main(int argc, char **argv)
{
    varargsExample(5,
    "TestInt", 0,
    /* This will fail if read as a long */
    "TestIntNegative", -1,
    "TestLong", 0L,
    "TestLongNegative", -1L,
    NULL); 
}

long varargsExample(int firstArg, ...)
{
    va_list args;
    char * name;
    long nextValue;

    va_start(args, firstArg);
    while ((name = va_arg(args, char *)) != 0)
    {
        /* If the type is changed to read in an …
Run Code Online (Sandbox Code Playgroud)

c 64-bit gcc variadic-functions

3
推荐指数
1
解决办法
2108
查看次数

标签 统计

64-bit ×1

c ×1

gcc ×1

variadic-functions ×1