Pragma in CODESYS
pragma 是应用程序源代码中用大括号括起来的文本。句法用来在代码中插入特殊语句,编译器可以对其进行评估。这允许一个 pragma 影响一个或多个变量在预编译或编译(代码生成)方面的属性。编译器无法识别的语法标记将作为注释传递给编译器。
pragma 的语句字符串也可以扩展到多行。有关语法的更多详情,请参阅CODESYS 各pragma的说明。
有不同的pragma用于不同的目的(例如:初始化变量、监控变量、将变量添加到符号配置中、在编译过程中强制显示信息,以及变量在特定条件下的行为)。




注意

必须尊重大小写字母。
示例
{warning 'This is not allowed'} {attribute 'obsolete' := 'datatype fb1 not valid!'} {attribute 'Test':='TestValue1; TestValue2; TestValue3'}
可能的插入位置




注意

CODESYS 中的 Pragmas 并不是 C 预处理器指令的一对一实现。您必须像放置普通语句一样放置 pragma。不得在表达式中使用 pragma。
可在以下位置插入CODESYS 编译器应评估的 pragma:
-
在 POU 的声明部分:
-
在文本声明编辑器中,直接在 POU 开头或变量声明之前指定pragma行。
-
在表格编辑器中,您可以在“编辑声明部分” /“属性” 对话框中指定应位于第一行声明之前的pragma。
-
-
在全局变量列表中
-
在 POU 的实施部分:
-
该 pragma 必须位于 "语句位置",即 POU 开头的单独一行,或 "
;
" 或END_IF
,END_WHILE
等之后。 -
FBD/LD/IL 编辑:在 FBD/LD/IL 编辑器网络中,您可以通过“FBD/LD/IL Insert Label” 命令,像插入标签一样插入pragma。然后,在带有相应 pragma 语句的标签文本字段中,替换默认文本“Label:” 。要在使用标签的同时使用pragma,首先要指定pragma,然后再指定标签。
-
条件pragma的错误位置和正确位置
不正确:
{IF defined(abc)} IF x = abc THEN {ELSE} IF x = 12 THEN {END_IF} y := {IF defined(cde)} 12; {ELSE} 13; {END_IF} END_IF
正确:
{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 {END_IF}
在“Properties” 对话框(“Compile” 类别)中,可以指定可在语法中查询的 "定义"。
范围
根据 pragma 的类型和内容,它可能会对以下内容产生影响:
-
后续声明
-
正是下一句话
-
所有后续语句,直到被相应的pragma取消。
-
所有后续语句,直到使用其他参数执行相同的 pragma 或代码结束。在这里,"代码 "指的是声明部分、实现部分、全局变量列表和类型声明。因此,当一个 pragma 单独出现在声明部分的第一行,并且没有被另一个 pragma 取代或取消时,该 pragma 会影响整个对象。
中的 Pragma 类别 CODESYS
CODESYS pragma分为以下几类:
-
属性pragma(影响编译和预编译)
-
消息pragma(编译时打印用户定义的消息)
-
条件语用(影响代码生成)
-
用户定义的pragma