C# #line 지시문이란?
#line 지시문을 사용하면 컴파일러가 오류(error)와 경고(warning)를 보고할 때 출력하는 줄 번호와, 선택적으로 파일 이름까지 변경할 수 있습니다.
주로 코드 생성기나 전처리 도구가 자동으로 소스를 생성할 때, 실제 원본 파일 기준의 줄 번호를 표시하고 싶은 경우에 유용하게 활용됩니다.
#line 지시문 기본 예제
먼저 간단한 예제를 살펴보겠습니다.
#line 100 "demo"
int a; // 100번째 줄에서 CS0168 발생
int b; // 101번째 줄에서 CS0168 발생
int c; // 102번째 줄에서 CS0168 발생
위 예제에서는 세 개의 경고가 각각 지정된 줄 번호와 함께 보고됩니다. #line 100 "demo" 지시문은 이후 코드의 줄 번호를 100번부터 시작하도록 강제하며, 다음 #line 지시문이 등장하기 전까지는 파일 이름도 "demo"로 보고됩니다.
#line default 지시문으로 기본값 복원하기
다음 예제는 #line default 지시문을 사용하는 경우입니다. 이 지시문은 변경되었던 줄 번호를 컴파일러의 기본 번호 체계로 되돌립니다. 즉, 이전 지시문으로 다시 매겨졌던 줄 번호를 무시하고 원래 순서대로 줄 수를 계산합니다.
#line default
char a; // 15번째 줄에서 CS0168 발생
float b; // 16번째 줄에서 CS0168 발생
정리
#line 지시문은 디버깅 시 표시되는 줄 번호와 파일 이름을 임의로 조정할 수 있는 강력한 도구입니다. 코드 생성 도구를 만들거나 중간 언어를 C#으로 변환하는 작업을 할 때 실제 원본 위치를 추적하는 데 특히 유용하며, #line default를 통해 언제든 기본 동작으로 복원할 수 있습니다.