我想向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})。
答案 0 :(得分:0)
我最终做的是拥有函数将接受的各种数据类型的联合...然后使用关于参数大小的switch语句选择属性类型。