Visual Basic での条件付きコンパイル

"条件付きコンパイル" では、プログラム内の特定のコード ブロックが選択的にコンパイルされ、他のコード ブロックは無視されます。

たとえば、同じプログラミング タスクに対するさまざまなアプローチの速度を比較するデバッグ ステートメントを記述したり、複数の言語用にアプリケーションをローカライズしたりできます。 条件付きコンパイル ステートメントは、実行時ではなく、コンパイル時に実行するように設計されています。

条件付きでコンパイルされるコード ブロックは、#If...Then...#Else ディレクティブで示します。 たとえば、同じソース コードから同じアプリケーションのフランス語バージョンとドイツ語バージョンを作成するには、事前定義された定数 FrenchVersionGermanVersion を使用して、プラットフォーム固有のコード セグメントを #If...Then ステートメントに埋め込みます。 次の例はその方法を示しています。

#If FrenchVersion Then
   ' <code specific to the French language version>.
#ElseIf GermanVersion Then
   ' <code specific to the German language version>.
#Else
        ' <code specific to other versions>.
#End If

コンパイル時に FrenchVersion 条件付きコンパイル定数の値を True に設定すると、フランス語バージョンの条件付きコードがコンパイルされます。 GermanVersion 定数の値を True に設定すると、コンパイラはドイツ語バージョンを使用します。 どちらも True に設定されていない場合は、最後の Else ブロックのコードが実行されます。

Note

コードが現在のブランチに含まれていない場合、コードを編集し、条件付きコンパイル ディレクティブを使用したときに、オートコンプリートは機能しません。

条件付きコンパイル定数の宣言

条件付きコンパイル定数は、次の 3 つの方法のいずれかで設定できます。

  • プロジェクト デザイナー

  • コマンド ライン (コマンド ライン コンパイラを使用する場合)

  • コード内

条件付きコンパイル定数には特別なスコープがあり、標準コードからアクセスすることはできません。 条件付きコンパイル定数のスコープは、設定方法によって異なります。 次の表に、上記の 3 つの方法をそれぞれ使用して宣言された定数のスコープを示します。

定数の設定方法 定数のスコープ
プロジェクト デザイナー プロジェクト内のすべてのファイルに対してパブリック
コマンド ライン コマンド ライン コンパイラに渡されるすべてのファイルに対してパブリック
コード内の #Const ステートメント これが宣言されているファイルに対してプライベート
プロジェクト デザイナーで定数を設定するには
- 実行可能ファイルを作成する前に、「プロジェクトおよびソリューションのプロパティの管理」に記載されている手順に従って、プロジェクト デザイナーで定数を設定します。
コマンド ラインで定数を設定するには
- 次の例のように、-d スイッチを使用して条件付きコンパイル定数を入力します。
vbc MyProj.vb /d:conFrenchVersion=–1:conANSI=0
-d スイッチと最初の定数の間にスペースは不要です。 詳細については、「-define (Visual Basic)」をご覧ください。
コマンド ラインの宣言は、プロジェクト デザイナーで入力された宣言をオーバーライドしますが、それらを消去するわけではありません。 プロジェクト デザイナーで設定した引数は、後続のコンパイルでも有効です。
コード自体に定数を記述する場合、定数のスコープはそれらが宣言されているモジュール全体であるため、配置に関して厳密な規則はありません。
コードで定数を設定するには
- 定数が使用されるモジュールの宣言ブロックに定数を配置します。 これにより、コードが整理され、読みやすくなります。
Title 説明
プログラム構造とコード規則 コードを読みやすくし、管理しやすくするための推奨事項を示します。

関連項目

#Const ディレクティブ

#If...Then...#Else ディレクティブ

-define (Visual Basic)