2013-03-30 4 views
15

첫 번째 프로젝트를 만들 때 C#을 사용했습니다. 많은 경고 오류가 있으며이 모든 경고 오류는 단일 오류 (내부 컴파일러 오류입니다. 자세한 내용은 콘솔 로그를 참조하십시오.)#pragma warning disable & restore

다음 표에서는 경고 오류를 줄이기 위해 #pragma warning disable을 사용했습니다. #pragma warning restore 문제 코드의 앞뒤.

최종 빌드에서 #pragma warning이 프로그램에서와 같이 비활성화 &을 사용하지 않도록 설정해야합니다. 아니면 제거해야합니까? 예 :

#pragma warning disable 
if (Displayer.instance != null && CTR.Tore== "Keepit") 
{ 
    Displayer.instance.SetFielderProfile (i); 
} 
#pragma warning restore 

최종 빌드의 경우 제거해야합니까?

답변

6

실용적인 가치가있는 코드라면 모든 경고가 켜져있는 상태에서 "경고로 경고"설정을 사용하여 경고없이 컴파일해야합니다.

코드에 오류가있는 것 같지 않습니다. 그래서 당신이 프 래그 마를 필요로하는 이유는 없습니다.

하지만 실제로 코드를 사용하거나 보거나 지불 할 필요가 없다면 무엇이든 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. . – SaravanaKumar

+0

나는 동의하지 않는다. 예를 들어 특정 인터페이스에서 상속해야하는 클래스가있었습니다. 이러한 인터페이스에는 때때로 특정 구현에 필요하지 않은 이벤트가있었습니다. 사용하지 않는 이벤트에 대한 경고를하지 않는 이유는 무엇입니까? –

+0

@shaitibber 좋은 이유가 있고 좋은 인라인 코멘트를 제공하면 가끔 경고를 인라인 할 수 없게됩니다. 문제의 코드는 그런 pragma가 필요하다는 신호를 보여주지 않습니다 ... 그리고 나는 당신이 언급 한 케이스가 인터페이스의 구현이 "사용되지 않은"것으로 컴파일러에 의해 처리 될 수 없으므로 경고를 일으키지 않아야한다고 믿습니다. 이유에 대한 별도의 질문을합니다. 경고를 받으면 좋은 생각 일 수 있습니다. 경고를받는 것에 대해 이미 좋은 답변이 있는지 검색하십시오. –

34

최소한 의도적으로 무시하도록 선택한 경고에 대해 구체적으로 설명해야합니다. 그런 식으로, 나중에 유지 관리에 '새로운'경고/문제가 발생하면 새로 도입 된 오류에 대한 경고는 담요 프라그마 경고 해제 명령에 의해 표시되지 않습니다.

Visual Studio의 빌드 출력 창에서 무시하기로 결정한 빌드 문제에 대한 경고 번호를 얻을 수 있습니다. 그들은 일반적으로 "경고 CS0168 ...."또는 이와 유사한 라벨이 붙어 있습니다. 어떤 경우에는 무시하도록 결정한 오류 만 타겟팅 할 수 있습니다.

#pragma warning disable 168, 3021 

    //Your code that generates warnings CS0168 and CS3021 here 

#pragma warning restore 168, 3021 
+15

+1. 나는 왜 항상 0128와 3021이 여기에 적용되지 않는지에 대한 설명을 덧붙이라는 권고를 덧붙일 것이다. 부분적으로는 개발자가 합리적인 결정을 내릴 때와 게으름을 덮는 경우 사이를 바라 보는 다른 사람과의 차이이기 때문에 좋은 이유를 쓸 수 없으면 버그를 숨기고 있기 때문입니다. –