프리프로세서

프리프로세서는 프로그램 컴파일 직전에 프로그램 소스 코드를 준비하기 위한 MQL5 컴파일러의 특수 하위 시스템입니다.

프리프로세서를 사용하면 소스 코드 가독성을 향상시킬 수 있습니다. 이 코드는 mql5-프로그램의 소스 코드가 포함된 특정 파일을 포함하여 구성할 수 있습니다. 특정 상수에 니모닉 이름을 할당할 수 있으므로 코드 가독성이 향상됩니다.

전처리 기능을 사용하면 mql5-프로그램의 특정 매개 변수를 확인할 수도 있습니다:

프리프로세서 명령문은 컴파일하기 전에 소스 코드를 전처리하는 데 사용됩니다. 명령문은 항상 #로 시작하므로 컴파일러는 변수, 함수 등의 이름에 기호를 사용할 수 없습니다.

각 명령문은 별도의 항목으로 설명되며 줄 바꿈까지 유효합니다. 한 항목에는 여러 명령문을 사용할 수 없습니다. 지시어 입력이 너무 크면 '\' 기호를 사용하여 여러 줄로 구분할 수 있습니다. 이 경우 다음 행은 명령문 입력의 연속으로 간주됩니다.

//+------------------------------------------------------------------+
//|  foreach pseudo-operator                                         |
//+------------------------------------------------------------------+
#define ForEach(index, array) for (int index = 0,                    \
   max_##index=ArraySize((array));                                   \
   index<max_##index; index++)    
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                         |
//+------------------------------------------------------------------+
void OnStart()
  {
   string array[]={"12","23","34","45"};
//--- ForEach를 이용한 배열 우회
   ForEach(i,array)
     {
      PrintFormat("%d: array[%d]=%s",i,i,array[i]);
    }
  }
//+------------------------------------------------------------------+
/* 아웃풋 결과  
   0: array[0]=12
   1: array[1]=23
   2: array[2]=34
   3: array[3]=45
*/

컴파일러의 경우 이 세 가지 #define 명령문들이 모두 하나의 긴 줄처럼 보입니다. 위의 예제는 #definite 매크로에서 두 매크로 토큰을 하나로 병합하는 데 사용되는 병합 연산자 ## 문자도 적용합니다. 토큰 병합 연산자는 매크로 정의의 처음 또는 마지막 연산자가 될 수 없습니다.