常量表达式
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=ProPgConstantExpressions
- 最后更新: 2021-10-02
常量项定义了一个可以在编译时求值的表达式。
前言:
常量表达式是只包含常量(这意味着在求值时不包含任何变量)以及某些允许的运算符/函数,并可能包含括号以覆盖运算符优先级顺序的表达式。
常量表达式可以在编译期间而非运行时求值,并可以用于任何可以使用常量的地方。
常量表达式主要需要用于:
作为预处理器指令和内置定义宏的参数,
作为 Enum/Type 结构和全局/静态变量的初始化器,
作为 Data 语句的数据常量。
常量表达式中允许的运算符/函数列表
fbc 不是脚本语言,前端没有完整功能的宏处理器。
常量折叠是 fbc 中的一种优化,它获取常量表达式,在编译时对常量表达式求值,并产生单一的常量结果。
要使常量折叠起作用,必须编写运算符/函数的编译时实现。
只有以下带有常量参数的运算符/函数可用于构成常量表达式:
Bit, BitReset, BitSet, HiByte, HiWord, LoByte, LoWord
+, -, *, /, \, ^, Mod, Shl, Shr
=, <>, `<=, >`=, , >
And, Eqv, Imp, Or, Not, Xor
Abs, Acos, Asin, Atan2, Atn, Cos, Exp, Fix, Frac, Int, Log, Sgn, Sin, Sqr, Tan
Asc, Chr, CVD, CVI, CVL, CVLongInt, CVS, CVShort, Len, SizeOf
Cast, CBool, CByte, CDbl, CInt, CLng, CLngInt, CShort, CSign, CSng, CUByte, CUInt, CULng, CULngInt, CUnsg, CUShort
more obviously all predefined symbols使用常量表达式的基本示例
说明三种不同用例的示例:
start GeSHi
vb
#define pi 4 * Atn(1)
Dim Shared As Double d = Sqr(2)
Type pt
Dim As Integer x = 300 * Cos(pi / 6)
Dim As Integer y = 300 * Sin(pi / 6)
End Type
Dim As pt p
Print pi '' 3.14159...
Print d '' 1.41421...
Print p.x, p.y '' 260 150
Sleepend GeSHi
参见
返回 目录