固定插入
Felix还允许您在Felix代码中的固定位置插入可执行代码。有两种情况。
提升普通语句
陈述可以用朴素的语言来表达 cstmt 声明:
proc hello() {
cstmt """
std::cout<< "Hello World" << ::std::endl;
std::cout<< "C++ Embedded in Felix" << ::std::endl;
""";
}
提升不可返回的可执行语句
如果C语句没有返回,请使用 noreturn 选项:
proc leave() {
noreturn cstmt "::std::exit(0);";
}
用参数提升
提升的代码可以接受参数:
proc error(x:int) {
noreturn cstmt "::std::exit($1);" x;
}
参数可以是元组,组件是由C绑定的常用规则插入的 $9 风格符号。
提升表达式
表达式也可以被提升,但必须给定类型:
var x = cexpr[int]"42" endcexpr;
如果表达式不是原子的,最好用括号括起来。
提升变量
有一种提升变量的快捷方式:
cvar[int] M_PI;
相当于:
cexpr[int]"M_PI" endcexpr;