使用编译指示
语用输入 CODESYS
应用程序源代码中用大括号括起来的文本被视为编译指示。 Pragma 用于将特殊语句插入到编译器可以评估的代码中。因此,pragma 可以影响一个或多个变量关于预编译或编译(代码生成)的属性。编译器不知道的编译指示会像注释一样被跳过。
pragma 的指令字符串也可以有多行。
有关语法的详细信息,请参阅每个的说明 CODESYS- 语用语。
有不同效果的 pragma:初始化变量、监视变量、将变量添加到符号配置、在编译过程中强制输出消息、变量在特定条件下的行为等。
重要
必须注意大小写。
{warning 'This is not allowed'} {attribute 'obsolete' := 'datatype fb1 not valid!'} {attribute 'Test':='TestValue1; TestValue2; TestValue3'}
可能的插入位置
重要
语用 CODESYS 不是 C 预处理器指令的一对一实现。您必须像普通语句一样定位 pragma。不得在表达式中使用 pragma。
一个编译指示 CODESYS编译器应该评估,您可以在以下位置插入:
在编程块的声明部分:
在文本声明编辑器中,您可以在块的开头或变量声明之前直接以行的形式输入 pragma。
在表格编辑器中,您输入应该出现在对话框中第一个声明行上方的编译指示 编辑声明部分 / 属性 一。
在全局变量列表中
在编程块的实现部分:
pragma 必须位于“指令位置”,即在单独一行的编程块的开头,或在“
;
“ 或者END_IF
,END_WHILE
等等。FBD/LD/STL 编辑器:在 FBD/KOP/STL 编辑器的网络中输入 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}
提示
在对话中 特性, 类别 翻译 您可以指定可以在编译指示中查询的定义。
作用范围:
根据 pragma 的类型和内容,pragma 会影响以下内容:
以下声明
完全按照下面的说明
在所有后续指令上,直到使用适当的 pragma 再次取消它
在所有后续语句上,直到使用不同的参数执行相同的 pragma,或者到达代码末尾。 “代码”在此上下文中的意思是:声明部分、实现部分、全局变量列表、类型声明。因此,在声明部分的第一行中单独存在且未被另一个替换或取消的 pragma 会影响整个对象。
Pragma 类别在 CODESYS
这 CODESYS-Pragma 分为以下几类: