IDLCOMPILE_OPT 선언문의 이해

관리자
2026-06-08
조회수 257

IDL이 1980년대 초에 시작된 오랜 전통을 가진 프로그래밍 언어이다 보니, 그 사이 사용되는 컴퓨터에 많은 발전이 있었습니다. 

소스코드를 컴파일할 때, 어느 기준에 맞추어 컴파일할 것인지 지정해 주는 방법이 있는데, COMPILE_OPT 선언문을 사용하는 것입니다. 

1. DEFINT32 : IDL의 정수 기본은 16bit 이지만, 이 옵션을 사용하면 보다 현대적인 32bit 정수를 기본으로 사용합니다. (요즘 거의 필수입니다)

2. STRICTARR : 배열의 괄호로 ()와 [] 를 모두 사용할 수 있지만, 이 옵션을 사용하면 엄격한 괄호 구별을 합니다. 배열은 [] 를 사용하고, 함수는 ()를 사용합니다. 

3. IDL2 : 2세대 IDL이란 의미인데, 내부적으로는 DEFINT32와 STRICTARR 을 동시에 선언한 것과 같습니다. 

4. FLOAT64 : IDL의 기본 실수는 32bit 이지만, 이 선언으로 기본 실수를 64bit로 설정합니다.

5. LOGICAL_PREDICATE : 0또는 null을 거짓(False), 그 외의 값을 참(True)로 인식합니다. 기본 설정은 가장 낮은비트의 값이 0(거짓)인지 1(참)인지 구분합니다.  기본 설정에서, 정수 3은 이진수 체계에서 '11' 이므로 참입니다. 정수 4는 이진수 체계에서 '100' 이므로 거짓입니다.  다른 언어와 조금 다르게 작동하죠.

6. STRICTARRSUBS : 기본 설정은, 배열을 참조하기 위해 "인덱스 번호의 배열"을 사용하는 경우 이 인덱스가 배열의 범위를 벗어나도 이를 유의미한 인덱스 값으로 클리핑(Clipping) 하고 에러를 내지 않습니다.  STRICT가 붙은 옵션이니 보다 엄격하게 작동합니다. 

이제 64bit 운영체제가 기본이 된 세상에서, IDL3 옵션이 나왔습니다(아직 IDL에서는 IDL2 옵션이 더 널리 쓰입니다). IDL 8.9 부터 제공되는 IDL3 옵션(3세대 IDL 표준)은 다음과 같습니다.

COMPILE_OPT IDL3는 다음과 같습니다.

      COMPILE_OPT DEFINT32, FLOAT64, LOGICAL_PREDICATE, STRICTARR