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

条件付きコンパイルでは、プログラムの特定のコード ブロックだけを選択してコンパイルできます。プログラムの他の部分は無視されます。

たとえば、同じプログラミング タスクに対する異なるアプローチについて速度を比較するデバッグ ステートメントを記述する場合や、アプリケーションを混合言語にローカライズする場合などがあります。条件付きコンパイル ステートメントは、実行時ではなくコンパイル時に実行されます。

条件に基づいてコンパイルするコードのブロックを指定するには #If...Then...#Else ディレクティブを使用します。たとえば、同じソース コードからフランス語バージョンおよびドイツ語バージョンのアプリケーションを作成するには、定義済みの定数 FrenchVersion および GermanVersion を使用して、プラットフォーム固有のコードを #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 ブロックのコードが実行されます。

[!メモ]

コードが現在の分岐の一部ではない場合、コードの編集時、および条件付きコンパイル ディレクティブの使用時に、オートコンプリートは機能しません。

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

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

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

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

  • コード内

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

定数の設定方法

定数のスコープ

プロジェクト デザイナー

プロジェクト内のすべてのファイルに対してパブリック

コマンド ライン

コマンド ライン コンパイラに渡されたすべてのファイルに対してパブリック

コード内の #Const ステートメント

宣言されたファイル内でプライベート

プロジェクト デザイナーで定数を設定するには

コマンド ラインで定数を設定するには

  • 次のように、/d スイッチを使って条件付きコンパイル定数を入力します。

    vbc MyProj.vb /d:conFrenchVersion=–1:conANSI=0

    /d スイッチと最初の定数の間にスペースは必要ありません。詳細については、「/define (Visual Basic)」を参照してください。

    コマンド ラインで設定する定数の値はプロジェクト デザイナーで行った設定より優先されますが、プロジェクト デザイナーで行った設定は消去されません。プロジェクト デザイナーで行った引数の設定は、以降のコンパイルでも有効です。

    コード自体に定数を記述する場合は、定数の宣言を行ったモジュール全体が定数のスコープになるため、配置場所に関する厳密な規則はありません。

コード内で定数を設定するには

  • 定数を使用するモジュールの宣言ブロックに定数を配置します。このように配置すると、コードが整理されてわかりやすくなります。

関連トピック

Title

Description

プログラム構造とコード規則 (Visual Basic)

読みやすく管理しやすいコードを作成するためのヒントを紹介します。

Reference

#Const ディレクティブ

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

/define (Visual Basic)