Pragma 指令

概述

pragma 指令用于影响一个或多个与编译或预编译(预处理器)进程相关的变量的属性。因此,pragma 影响代码生成。

注: 请注意,可用的 pragmas 不是 C 预处理器指令的一对一实现。它们被作为正常语句来处理,因此可能仅用在语句位置中。它们不得用在表达式中,也不得用在编辑器的声明部分中。

pragma 可以确定某个变量是要进行初始化、被监视、添加到参数列表、添加到符号列表还是在库管理器中被设为不可见。它可以在编译过程中强制消息输出。您可以使用条件性的 pragmas 来定义如何根据某些条件来处理变量。还可以在某个特定对象的编译属性中作为定义来输入这些 pragmas

您可以在单独一行中使用 pragma,也可以在实现或声明编辑器行中将其与补充文本一起使用。在 FBD/LD/IL 编辑器中,执行命令插入标号并将出现的文本字段中的默认文本 Label: 替换为 pragma。如果您希望设置标号以及 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 的类型和内容,pragma 将对后续语句(分别对所有后续语句)进行操作,直至满足了下列其中一个条件:

  • 由相应的 pragma 结束。

  • 使用不同参数执行了相同的 pragma

  • 已到达代码结尾。

在此上下文中,“代码”一词是指声明部分、实现部分、全局变量列表或类型声明。

注: Pragma 指令区分大小写。

如果编译器无法有意义地解释指令文本,则整个 pragma 将被作为注释来处理并且被跳过。

请参阅以下 pragma 类型: