Skip to main content

使用编译指示

语用输入 CODESYS

应用程序源代码中用大括号括起来的文本被视为编译指示。 Pragma 用于将特殊语句插入到编译器可以评估的代码中。因此,pragma 可以影响一个或多个变量关于预编译或编译(代码生成)的属性。编译器不知道的编译指示会像注释一样被跳过。

pragma 的指令字符串也可以有多行。

有关语法的详细信息,请参阅每个的说明 CODESYS- 语用语。

有不同效果的 pragma:初始化变量、监视变量、将变量添加到符号配置、在编译过程中强制输出消息、变量在特定条件下的行为等。

重要

必须注意大小写。

17. 例子
{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,如跳转标签:为此,选择命令 FBD/KOP/STL → 插入跳转标签.然后替换默认文本 标签: 在标签的文本字段中使用适当的 pragma 语句。如果要在跳转标签之外使用杂注,请先输入杂注,然后输入跳转标签。

18. 条件杂注的不正确和正确定位

不正确:

{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 分为以下几类: