重叠访问指针

Ant*_*ear 6 pointers swift swift4

我正在尝试swix在Swift 4中运行.我已经解决了大多数出现的初始问题,但还剩下一个我不知道要解决的问题.这是同一错误的三个实例,请参阅下面的代码

var nc = __CLPK_integer(N)
dgetrf_(&nc, &nc, !y, &nc, &ipiv, &info)
Run Code Online (Sandbox Code Playgroud)

重叠访问'nc',但修改需要独占访问; 考虑复制到局部变量

关于如何解决这个问题的任何想法?

Mar*_*n R 7

这是一个后果SE-0176强制到存储器的专有访问,这是在实施斯威夫特4:__m,__n以及__lda的参数dgetrf_()有型 UnsafeMutablePointer<>,即使所指向的变量不发生突变(但是编译器不知道!并且您将同一变量的地址传递nc给它们中的所有三个.

有两种可能的解决方案:附加变量副本:

var nc1 = nc, nc2 = nc
dgetrf_(&nc, &nc1, &matrix, &nc2, &ipiv, &info)
Run Code Online (Sandbox Code Playgroud)

或者withUnsafeMutablePointer,因为不安全的指针不使用任何主动执行:

withUnsafeMutablePointer(to: &nc) {
    dgetrf_($0, $0, &matrix, $0, &ipiv, &info)
}
Run Code Online (Sandbox Code Playgroud)