固定插入

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;