- 常量声明 (#define)
- 程序属性 (#property)
- 包括文件 (#include)
- 输入函数 (#import)
- 条件编译 (#ifdef, #ifndef, #else, #endif)
条件编译 (#ifdef, #ifndef, #else, #endif)
编译器使用预处理程序指令在编译之前对源代码进行预处理。这个指令通常以#开始,因此编译器禁止在变量,函数等名称中使用符号。
每个指令都由一个单独的条目描述,并且在换行符之前都是有效的。在一个条目中不能使用多个指令。如果指令条目太大,可以使用'\'符号将其分隔成若干行。 在这种情况下,下一行被认为是指令条目的延续。
预处理条件编译指令允许根据某个条件的实现编译或跳过程序的一部分。
条件可以采取下列形式之一。
#ifdef identifier
|
#ifndef identifier
|
任何条件编译指令可以跟在任何行数之后可能包含#else指令并以#endif结束。如果验证条件是真的,#else和#endif之间的行即被忽略。如果验证条件不满足,所有检查和#else之间的指令(或#endif指令如果前者不在)即被忽略。
例如:
#ifndef TestMode
|
根据程序类型和编译模式,按以下方式定义标准宏:
__MQL5__ macro在编译*.mq5文件时定义, __MQL4__ macro在编译*.mq4文件时定义。
_DEBUG macro 在debug模式编译时定义。
_RELEASE macro 在release模式编译时定义。
示例:
//+------------------------------------------------------------------+
|