kcg expand Pragma 介绍
在 Scade 语言支持的 pragma 中,kcg expand
pragma 描述的用户定义算子,kcg 在生成处理时,会将算子逻辑内联展开。
比如,对如下的 scade 程序
function rootOp(i: int8) returns (o: int8)
o = N(i);
function #pragma kcg expand #end N(foo: int8) returns (y: int8)
y = foo;
生成的程序为
void rootOp(inC_rootOp *inC, outC_rootOp *outC)
{
outC->o = inC->i; // operator N 逻辑已经展开
}
作为比较,若 operator N 未被 kcg expand
pragma 修饰:
function rootOp(i: int8) returns (o: int8)
o = N(i);
function N(foo: int8) returns (y: int8)
y = foo;
则生成程序为
void rootOp(inC_rootOp *inC, outC_rootOp *outC)
{
outC->o = /* o=(N)/ */ N(inC->i); // 对 operator N 进行调用,未展开
}