web-dev-qa-db-ja.com

Delphiの$ WARNコンパイラ指令の識別子

Delphiには、特定の警告を選択的に有効または無効にできる$ WARNコンパイラ指令があります。 Delphi 2009ヘルプファイルには、構文が記述されています。

{$WARN identifier ON|OFF}

ただし、6つの警告の識別子のみがリストされています。

すべての警告識別子の完全なリストが欲しいのですが。特に、Delphi2009の暗黙的な文字列キャスト警告W1057およびW1058の識別子を知りたいです。

暗黙のAnsi-> Unicodeキャスト(W1057)のものを推測することができました:

{$WARN IMPLICIT_STRING_CAST OFF}

そのためにグーグルで検索すると、もう1つが見つかりました。

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}

これで当面のニーズは解決しますが、警告識別子の完全なリストを知りたいのです。このようなものは文書化する必要があります。

46
Jan Goyvaerts

ヘルプを調べましたが、完全なリストが表示されませんでした...コードを調べてみると、コンパイラの警告定数がすべて次の場所にリストされているようです:CodeGear\RAD Studio\6.0\sources\toolsapi\DCCStrs.pas

「Implicit_String_Cast_Loss」を検索すると、定数sIMPLICIT_STRING_CAST_LOSS = 'DCC_IMPLICIT_STRING_CAST_LOSS'が表示されます。

対応するX_true/_false/_error定義を持つ残りのDCC_xxx文字列があなたが求めているものであると思います。

Delphi 7以降、オンラインヘルプはあまり良くありませんでした。

26
Darian Miller

DCCStrs.pasがDelphiコンパイラによって使用される識別子をリストするというDarianの権利。 Delphiにはコンパイラへのソースが含まれていないため、ソースを検索することは私には思い浮かびませんでした。

そのファイルからヒントと警告の識別子を抽出しました。

  • {$WARN ASG_TO_TYPED_CONST OFF}
  • {$WARN BAD_GLOBAL_SYMBOL OFF}
  • {$WARN BOUNDS_ERROR OFF}
  • {$WARN CASE_LABEL_RANGE OFF}
  • {$WARN COMBINING_SIGNED_UNSIGNED OFF}
  • {$WARN COMPARING_SIGNED_UNSIGNED OFF}
  • {$WARN COMPARISON_FALSE OFF}
  • {$WARN COMPARISON_TRUE OFF}
  • {$WARN CONSTRUCTING_ABSTRACT OFF}
  • {$WARN CVT_ACHAR_TO_WCHAR OFF}
  • {$WARN CVT_NARROWING_STRING_LOST OFF}
  • {$WARN CVT_WCHAR_TO_ACHAR OFF}
  • {$WARN CVT_WIDENING_STRING_LOST OFF}
  • {$WARN DUPLICATE_CTOR_DTOR OFF}
  • {$WARN DUPLICATES_IGNORED OFF}
  • {$WARN EXPLICIT_STRING_CAST OFF}
  • {$WARN EXPLICIT_STRING_CAST_LOSS OFF}
  • {$WARN FILE_OPEN OFF}
  • {$WARN FILE_OPEN_UNITSRC OFF}
  • {$WARN FOR_LOOP_VAR_UNDEF OFF}
  • {$WARN FOR_LOOP_VAR_VARPAR OFF}
  • {$WARN FOR_VARIABLE OFF}
  • {$WARN GARBAGE OFF}
  • {$WARN HIDDEN_VIRTUAL OFF}
  • {$WARN HIDING_MEMBER OFF}
  • {$WARN HPPEMIT_IGNORED OFF}
  • {$WARN HRESULT_COMPAT OFF}
  • {$WARN IMAGEBASE_MULTIPLE OFF}
  • {$WARN IMPLICIT_IMPORT OFF}
  • {$WARN IMPLICIT_STRING_CAST OFF}
  • {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  • {$WARN IMPLICIT_VARIANTS OFF}
  • {$WARN INVALID_DIRECTIVE OFF}
  • {$WARN LOCAL_PINVOKE OFF}
  • {$WARN LOCALE_TO_UNICODE OFF}
  • {$WARN MESSAGE_DIRECTIVE OFF}
  • {$WARN NO_CFG_FILE_FOUND OFF}
  • {$WARN NO_RETVAL OFF}
  • {$WARN OPTION_TRUNCATED OFF}
  • {$WARN PACKAGE_NO_LINK OFF}
  • {$WARN PACKAGED_THREADVAR OFF}
  • {$WARN PRIVATE_PROPACCESSOR OFF}
  • {$WARN RLINK_WARNING OFF}
  • {$WARN STRING_CONST_TRUNCED OFF}
  • {$WARN SUSPICIOUS_TYPECAST OFF}
  • {$WARN SYMBOL_DEPRECATED OFF}
  • {$WARN SYMBOL_EXPERIMENTAL OFF}
  • {$WARN SYMBOL_LIBRARY OFF}
  • {$WARN SYMBOL_PLATFORM OFF}
  • {$WARN TYPED_CONST_VARPAR OFF}
  • {$WARN TYPEINFO_IMPLICITLY_ADDED OFF}
  • {$WARN UNICODE_TO_LOCALE OFF}
  • {$WARN UNIT_DEPRECATED OFF}
  • {$WARN UNIT_EXPERIMENTAL OFF}
  • {$WARN UNIT_INIT_SEQ OFF}
  • {$WARN UNIT_LIBRARY OFF}
  • {$WARN UNIT_NAME_MISMATCH OFF}
  • {$WARN UNIT_PLATFORM OFF}
  • {$WARN UNSAFE_CAST OFF}
  • {$WARN UNSAFE_CODE OFF}
  • {$WARN UNSAFE_TYPE OFF}
  • {$WARN UNSUPPORTED_CONSTRUCT OFF}
  • {$WARN USE_BEFORE_DEF OFF}
  • {$WARN WIDECHAR_REDUCED OFF}
  • {$WARN XML_CREF_NO_RESOLVE OFF}
  • {$WARN XML_EXPECTED_CHARACTER OFF}
  • {$WARN XML_INVALID_NAME OFF}
  • {$WARN XML_INVALID_NAME_START OFF}
  • {$WARN XML_NO_MATCHING_PARM OFF}
  • {$WARN XML_NO_PARM OFF}
  • {$WARN XML_UNKNOWN_ENTITY OFF}
  • {$WARN XML_WHITESPACE_NOT_ALLOWED OFF}
  • {$WARN ZERO_NIL_COMPAT OFF}
56
Jan Goyvaerts

Delphi 2009のドキュメントに記載されていないその他の事項:

$ WARNディレクティブに、ONとOFFに加えて3番目のオプションERRORが追加されました。だからあなたは持つことができます:

{$WARN IMPLICIT_STRING_CAST OFF} to disable the warning
{$WARN IMPLICIT_STRING_CAST ON} to enable warning
{$WARN IMPLICIT_STRING_CAST ERROR} to turn the warning into an error
24
Jan Goyvaerts

このようなものは文書化する必要があります

今日の時点で、識別子とそのコンパイラ警告番号の完全なリストは、次のドキュメントにリストされています。

http://docwiki.embarcadero.com/RADStudio/en/Warning_messages_(Delphi)

抜粋:

$ WARNディレクティブの識別子には、次のいずれかの値を指定できます。

 |警告|識別子| 
 |:-----------------:|:----------:| 
 | SYMBOL_DEPRECATED | W1000 | 
 | SYMBOL_LIBRARY | W1001 | 
 | (...)| (...)|