다음을 통해 공유


컴파일러 지시문(F#)

이 항목에서는 처리기 지시문과 컴파일러 지시문에 대해 설명합니다.

전처리기 지시문

전처리기 지시문은 # 기호를 접두사로 사용하며 따로 한 줄을 할애하여 지시문을 작성합니다. 이 지시문은 컴파일러 자체보다 먼저 실행되는 전처리기를 통해 해석됩니다.

다음 표에는 F#에서 사용할 수 있는 전처리기 지시문의 목록이 나와 있습니다.

지시문

설명

#if symbol

조건부 컴파일을 지원합니다. symbol을 정의한 경우 #if 뒤에 있는 섹션의 코드가 포함됩니다.

#else

조건부 컴파일을 지원합니다. 위의 #if와 함께 사용되는 기호를 정의하지 않은 경우 포함할 코드 섹션을 표시합니다.

#endif

조건부 컴파일을 지원합니다. 코드의 조건부 섹션이 끝나는 지점을 표시합니다.

#[line] int, #[line] int string, #[line] int verbatim-string

디버깅을 위해 원본 소스 코드 줄과 파일 이름을 표시합니다. 이 기능은 F# 소스 코드를 생성하는 도구에서 사용할 수 있습니다.

조건부 컴파일 지시문

이러한 지시문 중 하나에 의해 비활성화된 코드는 Visual Studio 코드 편집기에서 흐리게 표시됩니다.

참고

조건부 컴파일 지시문의 동작은 다른 언어와 차이가 있습니다. 예를 들어 기호가 포함된 부울 식은 사용할 수 없으며 true 및 false가 특별한 의미를 갖지도 않습니다. #if 지시문에 사용하는 기호는 명령줄이나 프로젝트 설정에서 정의해야 합니다. F#에는 #define 전처리기 지시문이 없습니다.

다음 코드에서는 #if, #else 및 #endif 지시문을 사용하는 방법을 보여 줍니다. 이 예제의 코드에는 function1에 대한 두 가지 버전의 정의가 포함되어 있습니다. -define 컴파일러 옵션을 사용하여 VERSION1을 정의하면 #if 지시문과 #else 지시문 사이의 코드가 활성화됩니다. 그 밖의 경우에는 #else와 #endif 사이의 코드가 활성화됩니다.

#if VERSION1
let function1 x y =
   printfn "x: %d y: %d" x y
   x + 2 * y
#else
let function1 x y =
   printfn "x: %d y: %d" x y
   x - 2*y
#endif

let result = function1 10 20

F#에는 #define 전처리기 지시문이 없습니다. #if 지시문에 사용되는 기호를 정의하려면 컴파일러 옵션이나 프로젝트 설정을 사용해야 합니다.

조건부 컴파일 지시문은 중첩하여 사용할 수 있습니다. 전처리기 지시문에서 들여쓰기는 중요하지 않습니다.

줄 지시문

빌드 과정에서 컴파일러를 통해 F# 코드의 오류를 보고할 때는 각 오류의 발생 지점에 해당하는 줄 번호가 참조 정보로 사용됩니다. 이와 같은 줄 번호는 1부터 시작합니다. 파일의 맨 첫 줄이 1번입니다. 그러나 다른 도구를 사용하여 F# 소스 코드를 생성하는 경우에는 생성된 코드의 줄 번호가 일반적으로 크게 중요하지 않습니다. 생성된 F# 코드의 오류가 다른 소스에서 발생한 것일 가능성이 높기 때문입니다. #line 지시문을 사용하면 다른 도구를 통해 F# 소스 코드를 생성할 때 원래 줄 번호와 소스 파일에 대한 정보를 생성된 F# 코드에 전달할 수 있습니다.

#line 지시문을 사용하는 경우 파일 이름을 따옴표로 묶어야 합니다. 문자열 앞에 축자 토큰(@)이 오지 않는 경우 백슬래시 문자를 경로에 사용하려면 한 개가 아닌 두 개의 백슬래시 문자를 사용하여 이를 이스케이프해야 합니다. 다음은 유효한 줄 토큰입니다. 이 예제에서는 도구를 사용하여 원래 파일 Script1을 실행한 결과로 F# 코드 파일이 자동 생성되며 이러한 지시문이 있는 위치의 코드가 파일 Script1의 25번 줄에 있는 몇몇 토큰으로부터 생성되는 것으로 가정합니다.

# 25
#line 25
#line 25 "C:\\Projects\\MyProject\\MyProject\\Script1"
#line 25 @"C:\Projects\MyProject\MyProject\Script1"
# 25 \@\"C:\Projects\MyProject\MyProject\Script1\"

이 토큰은 해당 위치에서 생성되는 F# 코드가 Script1의 25번 줄 또는 그 부근에 있는 몇몇 구문으로부터 파생됨을 나타냅니다.

컴파일러 지시문

컴파일러 지시문은 # 기호가 접두사로 사용된다는 점에서 전처리기 지시문과 형태가 비슷하지만 전처리기에 의해 해석되지 않고 컴파일러를 통해 해석 및 처리되도록 남겨진다는 점에서 차이가 있습니다.

다음 표에는 F#에서 사용할 수 있는 컴파일러 지시문이 나와 있습니다.

지시문

설명

#light ["on"|"off"]

다른 ML 버전과의 호환성을 위해 간단한 구문을 사용하거나 사용하지 않도록 설정합니다. 기본적으로 간단한 구문을 사용하도록 설정됩니다. 자세한 구문은 항상 사용할 수 있도록 설정됩니다. 따라서 간단한 구문과 자세한 구문을 함께 사용할 수 있습니다. #light 지시문 자체는 #light "on"과 같습니다. #light "off"를 지정하는 경우에는 모든 언어 구문에 대해 자세한 구문 형식을 사용해야 합니다. F# 관련 설명에 나오는 구문은 간단한 구문을 사용하는 것을 전제로 하여 제시됩니다. 자세한 내용은 자세한 구문(F#)을 참조하십시오.

해석기(fsi.exe) 지시문에 대한 자세한 내용은 F# Interactive(fsi.exe) 참조를 참조하십시오.

참고 항목

기타 리소스

F# 언어 참조

컴파일러 옵션(F#)