Domanda

Sto porting di un po ' di codice da un quadro libreria all'altra, che mi richiede di commento, di grandi sezioni di codice per farlo compilare, e poi ripristinare con attenzione di loro.Nel frattempo, ricevo tonnellate di avvisi a causa di tutte le commentato codice.Così ho deciso di scrivere un breve file di inclusione per sopprimerli:

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

Ho incluso in tutte le unità che mi tonnellate di avvisi, ma ora, quando ho compilazione, il compilatore di restituire il seguente messaggio:

[DCC Avviso] incompiuta.inc(1):W1054 Avvertenze soppressa per unported unità commentato codice

Mi piacerebbe che mi dicono che l'avviso è venuta dall'unità facendo l'compreso, non includi il file stesso.C'è qualche modo per farlo, o al lavoro, il nome dell'unità in un messaggio, senza effettivamente spostare il $MESSAGGIO direttiva fuori del file di inclusione e in ogni singola unità in cui ho fatto questo?

È stato utile?

Soluzione

Qui è un trucco, che utilizza il fatto che il compilatore suggerimento per "inutilizzati metodi privati" contiene il nome dell'unità, la classe è dichiarata, anche se la classe con il metodo privato è dichiarata in un file di inclusione.

Questo richiede che la include-direttiva per il tuo file di inclusione appare in una parte dell'unità, dove le dichiarazioni sono ammessi, così dopo la clausola uses la sezione di interfaccia o dopo la clausola uses della sezione attuazione.

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}

Include file dovrebbe essere simile a questo:

{$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}

Ora, si ottengono i seguenti due messaggi, uno per ogni unità che include che includono file:

[DCC Avviso] incompiuta.inc(1):W1054 Avvertenze soppressa per unported unità commentato codice, nome di Unità di vedere la prossima linea
[DCC Suggerimento] actualunitname.pas(5):Il simbolo privato UnitWithSuppressedWarnings è stata dichiarata ma mai utilizzato.

Si noti che il nome effettivo dell'unità viene visualizzato nella seconda riga.

Osservazione:Non vedere la seconda linea, se compilatore suggerimenti sono spenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top