C\#예비 처리 명령 의\#line,\#pragma warning 상세 분석
4130 단어 예비 처리 명령#line#pragma warning
class MainClass
{
static void Main()
{
#line 200
int i; // CS0168 on line 200
#line default
char c; // CS0168 on line 9
}
}
비고:\#line 명령 은 생 성 과정 에서 자동 중간 단계 에서 사용 할 수 있 습 니 다.예 를 들 어 원본 코드 파일 에서 줄 을 삭제 하지만 컴 파일 러 가 파일 의 원본 줄 번 호 를 기반 으로 출력 을 만 들 기 를 원한 다 면 줄 을 제거 한 다음\#line 으로 원본 줄 번 호 를 모 의 할 수 있 습 니 다.\#line hidden 명령 은 디 버 거 에 몇 개의 연속 적 인 줄 을 숨 깁 니 다.그러면 개발 자가 한 마디 한 마디 코드 를 통과 할 때\#line hidden 과 다음\#line 명령(다른\#line hidden 명령 이 아니 라 고 가정)사이 의 모든 줄 을 건 너 뜁 니 다.이 옵션 을 사용 하면 ASP.NET 에서 사용자 가 정의 한 코드 와 컴퓨터 에서 생 성 된 코드 를 구분 할 수 있 습 니 다.ASP.NET 은 이 기능 의 주요 사용자 임 에 도 불구 하고 더 많은 소스 생 성 기 를 사용 할 수 있 습 니 다.\#line hidden 명령 은 오류 보고서 의 파일 이름 이나 줄 번호 에 영향 을 주지 않 습 니 다.즉,숨겨 진 블록 에서 오류 가 발생 하면 컴 파일 러 는 현재 파일 이름과 잘못된 줄 번 호 를 보고 합 니 다.\#line filename 명령 은 컴 파일 러 출력 에 나타 나 고 싶 은 파일 이름 을 지정 합 니 다.기본적으로 원본 코드 파일 의 실제 이름 을 사용 합 니 다.파일 이름 은 따옴표(")에 묶 어야 합 니 다.소스 코드 파일 은\#line 명령 의 모든 번 호 를 가 질 수 있 습 니 다.예제 아래 의 예제 에 서 는 디 버 거 가 코드 에 숨겨 진 줄 을 무시 하 는 방법 을 설명 합 니 다.이 예제 가 실 행 될 때 세 줄 의 텍스트 를 표시 합 니 다.그러나 예제 와 같은 정지점 을 설정 하고 F10 키 를 누 르 면 코드 를 통과 할 때 디 버 거 가 숨겨 진 줄 을 무시 하 는 것 을 볼 수 있 습 니 다.숨겨 진 줄 에 정지점 을 설정 하 더 라 도 디 버 거 는 무시 합 니 다
// preprocessor_linehidden.cs
using System;
class MainClass
{
static void Main()
{
Console.WriteLine("Normal line #1."); //
#line hidden
Console.WriteLine("Hidden line.");
#line default
Console.WriteLine("Normal line #2.");
}
}
\#pragma warning 명령:경고 메 시 지 를 닫 고 다시 시작 할 수 있 도록 합 니 다.일상적인 개발 과정 에서 우 리 는 코드 를 자주 컴 파일 한다.컴 파일 하 는 과정 에서 많은 정보 가 나타난다.많은 쓸모없는 경고 정 보 는 항상 편리 한 과정 에서 제시 되 어 주요 경 고 를 방해 할 수 있다.이것 도 예비 처리 기 명령 을 통 해 닫 아서 표 시 를 막 을 수 있다.흔히 볼 수 있 는 경 고 는 다음 과 같다(CS 0219,CS 0681 등).
예 를 들 어
public class C
{
int i = 10;// :C.i ,
[Obsolete(" ",false)]
public static void aa()
{
}
static void Main()
{
int t=5; // :t ,
aa(); // :
}
}
컴 파일 생 성 메 시 지 는 다음 과 같다.메모:vs 2010 을 여러 번 컴 파일 하면 자동 으로 경 고 를 제거 합 니 다.경고 가 출력 에 표시 되 는 지 확인 하려 면 항목 을 정리 할 수 있 습 니 다.
빈 디 렉 터 리 에 있 던 프로그램 집합 파일 을 삭제 하 는 역할 을 합 니 다.
만약 우리 가 위의 빨간색 상자 안의 경 고 를 표시 하지 않 기 를 원한 다 면,우 리 는\#pragma warning 명령 으로 이 경 고 를 없 앨 수 있 습 니 다.
이전 코드 에 예비 처리 명령 을 추가 합 니 다
#pragma warning disable 0618,0219,0414
public class C
{
int i = 10;// :C.i ,
[Obsolete(" ",false)]
public static void aa()
{
}
static void Main()
{
int t=5; // :t ,
aa(); // :
}
}
다시 생 성 할 때 경고 가 사라 진 것 을 발 견 했 습 니 다.#pragma warning disable/restore 0618
disable/restore , , “CS” 。
, 0618 。
#pragma warning , /nowarn , MSDN:나 를 눌 러 들 어가 게 하 다
PS:#pragma , warning ,#pragma : , 。