ImportObjC 编译指示
类似于 C 语言的importc 编译指示,importobjc 编译指示可以用来导入 Objective C 方法。 生成的代码使用 Objective C 的方法调用语法。 [obj method param1: arg] 。 除了 header 和 emit 编译指示,允许宽松地与用 Objective C 编写的库对接。
# 关于如何与 GNUStep 对接的可怕示例...
{.passl: "-lobjc".}
{.emit: """
#include <objc/Object.h>
@interface Greeter:Object
{
}
- (void)greet:(long)x y:(long)dummy;
@end
#include <stdio.h>
@implementation Greeter
- (void)greet:(long)x y:(long)dummy
{
printf("Hello, World!\n");
}
@end
#include <stdlib.h>
""".}
type
Id {.importc: "id", header: "<objc/Object.h>", final.} = distinct int
proc newGreeter: Id {.importobjc: "Greeter new", nodecl.}
proc greet(self: Id, x, y: int) {.importobjc: "greet", nodecl.}
proc free(self: Id) {.importobjc: "free", nodecl.}
var g = newGreeter()
g.greet(12, 34)
g.free()
这个例子需要告知编译器生成 Objective C (命令 objc ) 才能工作。当编译器输出 Objective C 代码时会定义条件标识符 objc。
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .