次の方法で共有


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 ブロック内のコードが実行されます。

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

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

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

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

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

  • コード内

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

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

リファレンス

#Const ディレクティブ

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

-define (Visual Basic)