CodegenDecl 编译指示
codegenDecl 指示可以用于直接影响 Nim 的代码生成器。 它接收一个格式字符串,该字符串决定了在生成的代码中如何声明变量、过程或对象类型。
对于变量,格式字符串中的 $1 表示变量的类型,$2 表示变量的名称,$# 按出现的先后顺序依次表示 $1、$2。
以下 Nim 代码:
var
a {.codegenDecl: "$# progmem $#".}: int
将生成此 C 代码:
int progmem a
对过程而言,$1是过程的返回值类型,$2是过程的名字,$3是参数列表,$# 按出现的先后顺序依次表示 $1、$2、$3。
以下 Nim 代码:
proc myinterrupt() {.codegenDecl: "__interrupt $# $#$#".} =
echo "realistic interrupt handler"
将生成此代码:
__interrupt void myinterrupt()
对于对象类型,$1代表对象类型的名称,$2 是字段列表,$3 是基类型。
const strTemplate = """
struct $1 {
$2
};
"""
type Foo {.codegenDecl:strTemplate.} = object
a, b: int
将生成此代码:
struct Foo {
NI a;
NI b;
};
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .