我正在将 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)