我想向 C 函数发送一个任意大小的参数。
现在我正在做:(一个人为的例子)
typedef struct {
int a;
float b;
} myStruct;
void foo(int, char)
void bar(int, myStruct)
void* arg;
size_t size = flag ? sizeof(char) : sizeof(myStruct);
void (*fn)(int, ...) = flag ? &foo : &bar;
char data[size];
memcpy(data, arg, size);
fn(42, data);
有人知道更简单的方法吗?
更新
我实际上想要做的是调配一个 Objective-C 属性(类似于 KVO 的工作方式)。我想使用 imp_implementationWithBlock() 来创建动态实现,但是我需要一种方法来调用原始实现。originalIMP(_self, _cmd) 一切都很好,只是最后的参数可以是可变大小的(即 CGRect、任意结构等)。我想做 originalImp(_self, _cmd, {struct of size n})。