ios - 将 Int 传递给 C 函数

标签 ios objective-c swift

我正在编写 Swift 代码并且需要调用 C 函数。

var idx = 5
//ERROR: Cannot invoke c_func with argument list of type '(Int)'
c_func(idx)

C 函数签名是:

void c_func(int idx)

所以,我的问题是如何将 swift Int 传递给接受 int 作为参数的 C 函数?

最佳答案

C 类型 int 映射到 Swift 为

/// The C 'int' type.
typealias CInt = Int32

因此您必须将变量声明为CInt:

var idx : CInt = 5
c_func(idx)

或者将Int转换为CInt:

var idx = 5
c_func(CInt(idx))

(当然你可以用Int32来代替,如果你想强调它是一个固定大小的 整数类型。)

有关(目标-)C 类型之间映射的更多信息 和 Swift 类型可以在 "Using Swift with Cocoa and Objective-C" 中找到文档。

关于ios - 将 Int 传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32478352/

相关文章:

ios - Visual Studio 中的 Cordova 构建没有 IPA 输出

objective-c - 从 XML 文件构建 iOS 应用程序

objective-c - 如何获得 MacOS 上特定用户的首选语言?

ios - Swift textfield - 决定 View 是否必须向上推

swift - 是否可以为 RealityKit 中的对象设置基于位置的 anchor ?

ios - 如何上传用户个人资料图片

ios - 使用 ARC 查找对象的保留位置

ios - 如何将 Xcode arm64 编译器输出视为汇编语言?

iphone - 无法将 NSString 对象复制到我的自定义对象的属性 Objective-c

iphone - 按下主页按钮时强制退出 iPhone 应用程序(在 iOS4 上)