문제

한 프레임 워크 라이브러리에서 다른 프레임 워크 라이브러리로 일부 코드를 포팅하고 있는데,이를 통해 많은 코드 섹션을 컴파일하기 위해 코드의 큰 섹션을 댓글을 달아야합니다. 그 동안, 나는 댓글이 붙은 모든 코드 때문에 많은 경고를받습니다. 그래서 나는 그들을 억제하기 위해 빠른 포함 파일을 작성하기로 결정했습니다.

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'}
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

나는 이것을 수많은 경고를주는 모든 유닛에 포함했지만 이제 컴파일하면 컴파일러가 다음과 같이 메시지를 반환합니다.

DCC 경고] 미완성. inc (1) : W1054 주석이없는 코드로 포트되지 않은 장치에 대한 경고

나는 포함 파일 자체가 아니라 포함하는 장치에서 경고가 나오고 있다고 말하고 싶습니다. 실제로 $ 메시지 지시문을 포함 파일에서 그리고 내가 한 모든 단일 장치로 옮기지 않으면 서이 작업을 수행 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

다음은 "사용되지 않은 개인 메소드"에 대한 컴파일러 힌트에 장치 이름이 포함되어 있다는 사실을 사용하는 트릭입니다. 개인 메소드가있는 클래스가 포함 파일에 선언 되더라도 클래스는 선언됩니다.

이를 위해서는 포함 파일에 대한 장기적인 포함이 장치의 일부에 표시되며, 선언이 허용되는 경우, 따라서 인터페이스 섹션의 사용 절후 또는 구현 섹션의 사용 절을 마친 후.

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}

포함 파일은 다음과 같습니다.

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code, Unit name see next line'}
type
  TUnit_With_Suppressed_Warnings = class
  private
    procedure UnitWithSuppressedWarnings; virtual; abstract;
  end;

{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

이제 파일이 포함 된 모든 장치에 대해 다음과 같은 두 메시지를 받게됩니다.

DCC 경고] 미완성. inc (1) : W1054 댓글이없는 코드로 포트되지 않은 장치에 대한 경고, 단위 이름 다음 줄 참조
dcc 힌트] realyUnitName.pas (5) : 개인 기호가있는 개인 기호가 선언되었지만 사용되지 않았습니다.

실제 장치의 이름은 두 번째 줄에 나타납니다.

비고 : 컴파일러 힌트가 꺼져 있으면 두 번째 줄이 표시되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top