Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS x64中获取可变函数的参数_Ios_Objective C_Arm_Variadic_Arm64 - Fatal编程技术网

在iOS x64中获取可变函数的参数

在iOS x64中获取可变函数的参数,ios,objective-c,arm,variadic,arm64,Ios,Objective C,Arm,Variadic,Arm64,非常简单,在x86版本中,我可以做到: static id method(id)(id self, SEL _cmd, ...) { va_list args; va_start(args, _cmd); 如您所知,args将包含指向堆栈的指针,并通过以下方式: args+=大小(类型) 我可以遍历参数的完整列表 保持简短,args将包含一个带有指向我的参数的指针的列表 我想在ios X64设备上运行,但它没有按预期运行 va_list args; va_start(args,

非常简单,在x86版本中,我可以做到:

static id method(id)(id self, SEL _cmd, ...) {
    va_list args;
    va_start(args, _cmd);
如您所知,args将包含指向堆栈的指针,并通过以下方式: args+=大小(类型)

我可以遍历参数的完整列表

保持简短,args将包含一个带有指向我的参数的指针的列表

我想在ios X64设备上运行,但它没有按预期运行

va_list args;
va_start(args, _cmd);
不再返回指向包含参数的堆栈顶部的指针=/

我怎样才能像在ios armv7/7s中那样,在ios arm64中获取指向参数的指针列表


感谢

标准/变量调用是否返回任何类型的堆栈指示取决于实现,不应依赖(例如,特定abi/编译器实现可能没有用于放置参数的堆栈)。可以保证的是,您可以以标准方式使用它来计算函数的未命名参数:

static id method(id)(id self, SEL _cmd, ...) {
    va_list args;
    va_start(args, _cmd);

    const char* pointerArg = va_arg(args, const char *);
    int arg = va_arg(args, int);

    va_end(args);
}
每次调用va_arg都会返回一个适当类型的参数,并移动arg以引用下一个参数


有关更多信息,您可以查看

欢迎使用堆栈溢出。您的帖子缺少一些关于您的实现的细节,这些细节可以帮助其他人帮助您。如果你能提供一个简短完整的代码片段来展示错误行为,描述你的输入、结果和预期结果,那么有人会有更好的机会来帮助你。没错,修复了。还有更多的绒毛,所以它会接受注释。va_arg不适用于x64 apple arch可变函数调用,我已经尝试过了,它为我返回了错误的指针=/很有可能是您错误地使用了它。编辑您的问题以添加实际的例程和调用。