pragma 指令用于影响一个或多个与编译或预编译(预处理器)进程相关的变量的属性。这意味着 pragma 会影响代码生成。
注意: 请注意,可用的 pragmas 不是 C 预处理器指令的一对一实现。它们被作为正常语句来处理,因此可能仅用在语句位置中。它们不得用在表达式中,也不得用在编辑器的声明部分中。
pragma 可以确定某个变量是要进行初始化、被监视、添加到参数列表、添加到符号列表还是在库管理器中被设为不可见。它可以在编译过程中强制消息输出。您可以使用条件性的 pragmas 来定义如何根据某些条件来处理变量。还可以在某个特定对象的编译属性中作为定义来输入这些 pragmas。
您可以在单独一行中使用 pragma,也可以在实现或声明编辑器行中将其与补充文本一起使用。在 FBD/LD/IL 编辑器中,执行命令插入标号并将出现的文本字段中的默认文本 Label: 替换为 pragma。如果您希望设置标号以及 pragma,请首先插入 pragma,然后插入标号。
pragma 指令括在花括号中。
{ <指令文本> }
左括号可以紧跟在某个变量名称后面。左括号和右括号必须在同一行中。
{IF defined(abc)}
IF x =abc THEN
{IF defined(cde)}
y := 12;
{ELSE}
y :=13;
{END_IF}
END_IF
{ELSE}
IF x = 12 THEN
{IF defined(cde)}
y := 12;
{ELSE}
y :=13;
{END_IF}
END_IF
注意: 不得在此反例中所示的位置使用条件 pragma。
根据 pragma 的类型和内容,pragma 将对后续语句(分别对所有后续语句)进行操作,直至满足了下列其中一个条件:
o由相应的 pragma 结束。
o使用不同参数执行了相同的 pragma。
o已到达代码结尾。
在此上下文中,“代码”一词是指声明部分、实现部分、全局变量列表或类型声明。
注意: Pragma 指令区分大小写。
如果编译器无法有意义地解释指令文本,则整个 pragma 将被作为注释来处理并且被跳过。
请参阅以下 pragma 类型:
o属性过时
o属性符号