Scripting: Preprocessor Directives – Arma Reforger

From Bohemia Interactive Community
Jump to: navigation, search

Preprocessor directives allow to determine preprocessor behaviour, e.g ignoring blocks of code depending on certain conditions.

For use cases, see e.g Scripting Temporary Feature.

Directive Description Example

#define

Define a flag. A flag is either defined or not.
A flag can be determined outside of the code; see Startup Parameters - scrDefine.
Copy
#define MY_FLAG

#ifdef

Open a preprocessor scope that is considered if the provided flag is defined. The scope must be ended by #endif (see below).
Copy
#define MY_FLAG #ifdef MY_FLAG Print("Flag is defined"); #endif

#ifndef

Open a preprocessor scope that is considered if the provided flag is not defined. The scope must be ended by #endif (see below).
Copy
#define MY_FLAG #ifndef MY_FLAG Print("Flag is not defined"); #endif

#else

Add a preprocessor scope that is of the opposite condition of the current #ifdef/#ifndef. The scope must be ended by #endif (see below).
Copy
#ifdef MY_FLAG Print("Flag is defined"); #else Print("Flag is not defined"); #endif

#endif

Close a preprocessor scope - see #ifdef and #ifndef above. See #ifdef and #ifndef above.

#include

Include another file. The effect is as if the other file's content was copy-pasted at this exact #include location.
Copy
// FileToInclude.c protected static const string MY_PRINT = "Hello there";

Copy
class SCR_ScriptedClass { #include "scripts/Game/FileToInclude.c" void ShowMessage() { Print(MY_PRINT); } }