Skip to main content
欢迎来到PAWPAW技术文档网站了解更多信息

XCC Pragma 指令

Pragma指令用于控制编译过程的各个方面,或向编译器提供额外的信息。XTC支持以下几种的编译指令:

#pragma unsafe arrays

警告

该编译指令仅在XC文件中生效

此编译指示禁用了运行时安全检查,防止越界指针解引用和防止索引无效数组元素。如果该编译指示出现在函数内部,则适用于该函数内部的下一个dowhilefor语句。如果该编译指示出现在函数外部,则适用于下一个函数定义的函数体。


#pragma loop unroll (n)

警告

该编译指令仅在XC文件中生效

此编译指示控制当前函数中下一个dowhilefor循环展开的次数。n指定要展开的迭代次数,展开仅在优化级别01及更高级别下执行。如果省略n参数,则编译器会尝试完全展开循环。在函数外部,此编译指示将被忽略。如果编译器无法执行展开操作,则会产生警告。


#pragma stackfunction n

此编译指示为当前翻译单元中下一个函数声明分配n个字(int型)的栈空间。


#pragma stackcalls n

警告

该编译指令仅在XC文件中生效

此编译指示为下一个语句中调用的任何函数分配n个字(int型)的栈空间。如果下一个语句不包含函数调用,则该编译指示将被忽略;下一个语句可以出现在另一个函数中。


#pragma ordered

警告

该编译指令仅在XC文件中生效

此编译指示控制下一个select语句的编译。此select语句被编译为这样一种方式,即当select开始时有多个事件准备就绪时,首先选择select语句中较早出现的情况,而不是后面出现的情况。


#pragma select handler

警告

该编译指令仅在XC文件中生效

此编译指示表示下一个函数声明是一个select处理程序。select处理程序可以在select语句的case中使用,如下例所示。

#pragma select handler
void f(chanend c, int &token, int &data);

...
select {
case f(c, token, data):
...
break;
}
...

其效果是启用作为函数第一个参数的资源上的事件。如果事件被接收,select处理程序的主体在case的主体之前执行。

select处理程序的第一个参数必须具有传输类型,返回类型必须为void

如果资源具有关联状态,例如条件,则在等待事件之前,select不会改变任何该状态。


#pragma fallthrough

警告

该编译指令仅在XC文件中生效

此编译指示表示预期下一个switch情况会穿透到下一个switch情况,而不带有breakreturn语句。这将抑制由于穿透而导致的编译器警告/错误。