Skip to content

Preprocessor

Paul Squires edited this page Oct 14, 2026 · 2 revisions

Home › Preprocessor › Preprocessor

Preprocessor

Commands that control the preprocessor.

Description

Preprocessor commands are sent to the compiler to control what gets compiled and how. They can be used to choose to compile one block of code rather than another for cross-platform compatibility, include headers or other source files, define small inline functions called macros, or alter how the compiler handles variables.

Conditional Compilation

Commands that allow for branches in compilation based on conditions.

Text Replacement

Commands that create text-replacement macros.

File Directives

Commands that indicate to the compiler how other files relate to the source file.

Control Directives

Commands that set compile options, control compilation, and report compile time information.

Metacommands

Commands that are kept for backward compatibility.

Conditional Compilation

#if

Compiles the following code block based on a condition.

#ifdef

Compiles the following code block if a symbol is defined.

#ifndef

Compiles the following code block if a symbol is not defined.

#elseif

Compiles the following code block if a condition is true and the previous conditions was false.

#elseifdef

Compiles the following code block if a symbol is defined and the previous conditions was false.

#elseifndef

Compiles the following code block if a symbol is not defined and the previous conditions was false.

#else

Compiles the following code block if previous conditions were false.

#endif

Signifies the end of a code block.

defined

Returns "-1" if a symbol is defined, otherwise "0".

Text Replacement

#define

Creates a single-line text-replacement macro.

#macro and #endmacro

Creates a multi-line text-replacement macro.

#undef

Undefines a symbol.

# Preprocessor Stringize

Converts text into a string literal.

## Preprocessor Concatenate

Concatenates two pieces of text.

! Escaped String Literal

Indicates string literal immediately following must be processed for escape sequences.

$ Non-Escaped String Literal

Indicates string literal immediately following must not be processed for escape sequences.

File Directives

#include

Inserts text from a file.

#inclib

Includes a library in the linking processes.

#libpath

Includes a path to search for libraries in the linking process.

Control Directives

#pragma

Sets compiling options.

#Pragma Reserve

Reserves symbol name.

#Cmdline

Sets compiler command options from source.

#lang

Sets dialect from source.

#print

Outputs a messages to standard output while compiling.

#error

Outputs a messages to standard output and stops compilation.

#assert

Stops compilation with an error message if a given condition is false.

#line

Sets the current line number and file name.

Metacommands

'$Include

Alternate form of the #include directive.

'$Dynamic

Alternate form of the Option Dynamic statement.

'$Static

Alternate form of the Option Static statement.

'$Lang

Alternate form of the #lang directive.

See also


Category: Preprocessor


Reproduced from the FreeBASIC Wiki Manual under the GNU Free Documentation License 1.3 — with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. Copyright © the FreeBASIC project and wiki contributors. See License.

Clone this wiki locally