Assert
Debugging macro that halts program execution if an expression is evaluated to 0 (false).
#define Assert(expression) If (expression) = 0 Then : fb_Assert( __FILE__, __LINE__, __FUNCTION__, #expression ) : End If
Assert( expression )
expression
The Assert macro is intended for use in debugging and works only if the -g option is selected in the FBC command line. In this case it prints an error message and stops the program execution if expression evaluates to 0.
Its normal use is to check the correct value of the variables during debugging.
If -g is not passed to fbc, the macro does not generate any code, and has no effect.
Note: If an Assert fails while the program is in a graphics Screen, the error message will not be visible as it will be printed to the graphics screen, which will be closed immediately after.
Syntax
#define Assert(expression) If (expression) = 0 Then : fb_Assert( __FILE__, __LINE__, __FUNCTION__, #expression ) : End If
Usage
Assert( expression )
Parameters
expression
Any valid conditional/numeric expression. If expression evaluates to 0 (i.e. "false"), execution is halted.
Description
The Assert macro is intended for use in debugging and works only if the -g option is selected in the FBC command line. In this case it prints an error message and stops the program execution if expression evaluates to 0.
Its normal use is to check the correct value of the variables during debugging.
If -g is not passed to fbc, the macro does not generate any code, and has no effect.
Note: If an Assert fails while the program is in a graphics Screen, the error message will not be visible as it will be printed to the graphics screen, which will be closed immediately after.
Example
Sub foo
Dim a As Integer
a=0
Assert(a=1)
End Sub
foo
'' If -g is used this code stops with: test.bas(3): assertion failed at FOO: a=1
Dim a As Integer
a=0
Assert(a=1)
End Sub
foo
'' If -g is used this code stops with: test.bas(3): assertion failed at FOO: a=1
Dialect Differences
- Not available in the -lang qb dialect unless referenced with the alias __ASSERT.
Differences from QB
- New to FreeBASIC
See also