相关疑难解决方法(0)

有没有办法从varargs函数的参数中检索浮点数?

如果函数是用原型定义的,该原型明确说明了参数的类型,例如.

void somefunc(int arg1, float arg2);
Run Code Online (Sandbox Code Playgroud)

但实施为

void somefunc(int arg1, ...) { ... }
Run Code Online (Sandbox Code Playgroud)

是否可以使用va_arg来检索浮点数?它通常被禁止这样做,因为varargs函数具有隐式类型提升,例如float to double,因此尝试检索未启动类型是不受支持的,即使使用未启动类型调用函数对更具体的函数原型也是如此.

这样做的原因是在运行时检索不同类型的参数,作为obj-c解释器的一部分,其中一个函数将被重用于所有不同类型的方法.

这最好是独立于架构(因此,如果没有其他相同的代码在模拟器和设备上工作),尽管如果没有办法这样做,那么将接受设备特定的修复.

编辑:忘了具体提到:函数知道参数的类型和数量(它查找要使用SEL _cmd参数进行地图查找解释的代码)

c objective-c variadic-functions

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

标签 统计

c ×1

objective-c ×1

variadic-functions ×1