Créer UnsafeMutablePointer <UnsafeMutablePointer <Int8>?>! En Swift pour C char ** hoge

Définissez Swift String sur UnsafeMutablePointer \ <UnsafeMutablePointer \ ?>!

sample.swift


import Foundation

let options = ["-m" : 2, "-n" : 3]

var args : [String] = []
for (option_name, value) in options {
    args.append(contentsOf: [option_name, value])
}
var cargs: [UnsafeMutablePointer<Int8>?] = args.map { strdup($0) }
initialize(Int32(args.count), &cargs)
for ptr in cargs { free(ptr) }

sample.c


void initialize(int argc, char **argv) {
    //divers
}

See: https://developer.apple.com/documentation/swift/unsafemutablepointer

Rendre C UnsafeMutablePointer \ ? Une chaîne Swift

sample.swift


let foo = get_foo()
let result = String(cString: foo!) // TODO:nul devrait être sûr
print(result)

sample.c


char* get_foo() {
    //revenir
}

Recommended Posts

Créer UnsafeMutablePointer <UnsafeMutablePointer <Int8>?>! En Swift pour C char ** hoge
Manipulez bien le caractère C ** avec Swift
Passer le caractère de langage C * à Swift
Présentation des caractères et des chaînes en langage C pour Swift Programmer
Créer un outil pour l'identification des noms dans Salesforce
Macro C pour watchOS et disponibilité de l'API Swift
Macro C pour tvOS et disponibilité de l'API Swift