我正在将cpp代码移植到Objective C。
在 cpp
中void create(INT32u &uLen)
{
sprintf((char*)ps[uLen],"%x%d",val,val1);
}
在目标C
中-(void)create:(uint32_t**)uLen
{
sprintf((char*)ps[uLen],"%x%d",val,val1);
}
这给了我一个错误,因为索引只取整数值。我如何传递变量。传递的原始变量也应该随着变量uLen所做的更改而改变。
答案 0 :(得分:3)
由于Objective-C是C的严格超集,你仍然可以这样做:传递指向你的整数的指针并使用解除引用运算符(前缀*)来查找该地址中存在的值:
-(void)create:(uint32_t*)uLen
{
sprintf((char*)ps[(*uLen)],"%x%d",val,val1);
}
但是,请参考is not very common in Cocoa。实际上,它主要限于NSError**
。为什么不传递一个简单的整数并返回新值,因为您当前正在返回void
?
-(uint32_t)create:(uint32_t)uLen
{
sprintf((char*)ps[uLen],"%x%d",val,val1);
...
return newValue;
}