.

条件编译附注

.
.

条件编译的目的是影响预编译过程或编译过程中代码的生成。ST实现语言支持这些编译附注。

提示!

他们在POU的实现中使用条件语用。如果在声明部分中使用它们,则CODESYS不会评估这些条件的用法。

通过条件编译,您会影响是否在编译时考虑了实现代码。例如,您可以依赖于是否声明了某个变量,是否存在某个功能块等。

.

编译附注

描述

{define <identifier> <string>}

可以查询该值,以后再将其与hasvalue进行比较。

{undefine <identifier>}

标识符的{define}语句被取消,并且标识符从现在开始再次为<undefined>。如果根本没有定义指定的标识符,则忽略编译附注。

{IF <expr>}...

{ELSIF <expr>}...

{ELSE}...

END_IF}

这些是条件编译的实用性。

指定的表达式<expr>在编译时必须是常量;将按照它们在此处出现的顺序对其进行求值,直到其中一个表达式表示非零值为止。链接到指令的文本被编译;其他行将被忽略。这些部分的顺序是固定的。ELSIFELSE部分是可选的。ELSIF段可能出现任何次数。您可以在常量<expr>中使用多个条件编译运算符。

<expr>

您可以在条件编译用法{IF}{ELSIF}的常量表达式<expr>中使用一个或多个运算符

 

您可以在POU的属性对话框的编译选项卡中输入表达式并将define定义为编译器定义。如果在属性对话框中输入define定义,则必须省略术语{define},这与实现代码中的定义相反。此外,您可以在属性对话框中指定多个define定义,以逗号分隔。

.
 运算符define(<identifier>)
.
 运算符defined (variable: <variable>)
.
 运算符defined (type: <identifier>)
.
 运算符defined (pou: <pou name>)
.
 运算符 defined (task: <identifier>)
.
 运算符 defined (resource: <identifier>)
.
 运算符 defined (IsSimulationMode)
.
 运算符 defined (IsLittleEndian)
.
 运算符 defined (IsFPUSupported)
.
 运算符 hasvalue (RegisterSize, '<register size>')
.
 运算符hasvalue (PackMode, '<pack mode value>')
.
 运算符hasattribute (pou: <pou name>, '<attribute>')
.
 运算符 e (variable: <variable>, '<attribute>')
.
 运算符hastype (variable: <variable>, <type-spec>)
.
 运算符hasvalue (<define-ident>, '<char-string>')
.
 运算符hasconstantvalue(<variable>, <literal expression>)
.
 运算符NOT <operator>
.
 运算符<operator> AND <operator>
.
 运算符<operator> OR <operator>
.
 运算符(<operator>)