[Gambas-user] Constant expressions
g4mba5 at gmail.com
Tue Oct 12 15:00:56 CEST 2021
I have implemented in the compiler the ability to use "constant
Constant expressions are integer expressions that are evaluated at
compile time, and that can be used in the following places:
- Constant declarations.
- Enumeration declarations.
- Embedded array declarations.
These expressions only support a subset of Gambas operators and
Here is the list of what you can use inside a constant expression:
- Arithmetic operators: +, -, *, /, \, Div, %, Mod
- Logical operators: And, Or, Xor, Not
- Bitwise operators: Shl, Shr, Asl, Asr, Lsl, Lsr
- Size of a native numerical or date datatype: SizeOf()
- Native datatype constants : gb.Boolean, gb.Byte, gb.Short, gb.Integer,
gb.Long, gb.Single, gb.Float, gb.Date.
- Another integer constant.
WARNING! In the context of constant integer expressions, The / operator
acts like the integer division operator \.
Note that the bitwise operators now can used like... operators, and must
be used that way in the context of constant integer expressions
Here are some examples:
Public Const Alpha As Integer = 1
Public Const Beta As Integer = (Alpha * 2) + 1
Public Const Delta As Byte = Beta + Alpha
Private Enum FirstFlag = 1 Shl 0, SecondFlag = 1 Shl 1,
ThirdFlag = 1 Shl 2
Private SomeEmbeddedArray[Delta * SizeOf(gb.Short)] As String
The corresponding documentation is available in the wiki here:
More information about the User