컴파일러 지시문(F#)
이 항목에서는 처리기 지시문과 컴파일러 지시문에 대해 설명합니다.
전처리기 지시문
전처리기 지시문은 # 기호를 접두사로 사용하며 따로 한 줄을 할애하여 지시문을 작성합니다.이 지시문은 컴파일러 자체보다 먼저 실행되는 전처리기를 통해 해석됩니다.
다음 표에는 F#에서 사용할 수 있는 전처리기 지시문의 목록이 나와 있습니다.
지시문 |
설명 |
---|---|
#ifsymbol |
조건부 컴파일을 지원합니다.symbol을 정의한 경우 #if 뒤에 있는 섹션의 코드가 포함됩니다. |
#else |
조건부 컴파일을 지원합니다.위의 #if와 함께 사용되는 기호를 정의하지 않은 경우 포함할 코드 섹션을 표시합니다. |
#endif |
조건부 컴파일을 지원합니다.코드의 조건부 섹션이 끝나는 지점을 표시합니다. |
#[line] int, #[line] intstring, #[line] intverbatim-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) 참조를 참조하십시오.