【发布时间】:2020-02-22 12:05:00
【问题描述】:
我正在使用桥接头在 Swift 中导入 C 标头。我的 C API 看起来像这样:
typedef struct MyStruct {
char buff[80];
} MyStruct;
const char* GetBuff(const MyStruct* m);
现在在 Swift 中,我尝试这样称呼它:
let b = MyStruct()
let mystr = String(cString: GetBuff(&b))
然后我得到这个编译错误:“不能将不可变值作为 inout 参数传递:'b' 是一个 'let' 常量”。为什么是这样? GetBuff() 的参数是一个 const 指针。 const 指针不是不可变的吗?
我知道将 'b' 更改为 'var b' 可以解决问题,但为什么需要这样做?
【问题讨论】:
-
const char*— is amutablepointer toconst char。也许您正在寻找char * const或const char * const? -
@user28434:
char *返回类型不是这里的问题。
标签: swift