条件付きコンパイルでは、プログラム内の特定のコード ブロックが選択的にコンパイルされ、他のブロックは無視されます。
たとえば、同じプログラミング タスクに対するさまざまなアプローチの速度を比較するデバッグ ステートメントを記述したり、複数の言語用にアプリケーションをローカライズしたりできます。 条件付きコンパイル ステートメントは、実行時ではなくコンパイル時に実行するように設計されています。
#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)」を参照してください。 コマンド ライン宣言は 、プロジェクト デザイナーに入力された宣言をオーバーライドしますが、消去しません。 プロジェクト デザイナーで設定された引数は、後続のコンパイルで引き続き有効になります。 コード自体に定数を記述する場合、スコープは宣言されているモジュール全体であるため、配置に関する厳密な規則はありません。 |
コードで定数を設定するには |
---|
- 使用されるモジュールの宣言ブロックに定数を配置します。 これにより、コードを整理して読みやすくすることができます。 |
関連トピック
タイトル | 説明 |
---|---|
プログラムの構造とコード規則 | コードを読みやすく保守しやすくするための提案を提供します。 |
リファレンス
.NET