2016-10-14 20 views
1

C#コンパイラディレクティブ(#pragmaなど)の有効範囲は何ですか?そのような指令はどこで述べるべきですか?それはどこで効力を発揮しますか?C#プラグマディレクティブの有効範囲

この時点でC#の仕様は多少曖昧です。

+1

これは重複していません。彼はプラグマの警告を求めていない、彼はプラグマについて尋ねている。例えば、プラグマチェックサムは、リンクされた質問 –

+0

によって答えられません。答え:コマンドに依存します(コンパイラに対する実装固有の指示です)。たとえば、警告を無効にするには、文書化されたコマンドがあります。 '#pragma warning disable ###' 別の '#pragma'コマンドを発行しない限り、その実装はファイルの残りの部分に対して有効になりますそれを再び有効にする '#pragma warning enable ###' 一方、 '#pragma checksum'は指定されたファイルに単純に適用されます。 –

答えて

1

the documentationの最初の行は非常に明確である:

の#pragmaは、それが表示されるファイルのコンパイルのためのコンパイラ特別な指示を与えます。

したがって、ディレクティブが置かれているファイルに関係します。ディレクティブを半分に配置すると、下半分に適用されます。

+0

ありがとうございます - 実際にはそれほど明確ではありません:-)。私が誤解していない限り、それは現れるファイルには当てはまらず、ファイルのどこからファイルの最後に適用されるか、またはマッチングに遭遇した場所(どこかで学んだように)に適用されます。 #pragma restore指令。プロジェクトレベルでプロジェクトプロパティとして適用されない限り、プロジェクト全体に適用されます。 –

+0

あなたはまったく正しいです。それは、それが立っている行から始まるファイルにのみ適用されます。これはC++とは異なりますが(例えば私が知る限り)、プラグマのファイルを適用します。 –

関連する問題