ID : 116
#Ifdef ... #Endif
機能
指定したマクロが定義されているかを判定し、コンパイルするソースコードを選択します。
構文
#Ifdef マクロ名 コード1 #Elif Defined(マクロ名) コード2 #Else コード3 #Endif
指定項目
- マクロ名
- マクロ名を指定します。
- コードn
- ソースコードを指定します。
解説
指定したマクロが定義されているかを判定し、コンパイルするソースコードを選択します。
マクロ名が定義されていればコード1をコンパイルし、コード2およびコード3はコンパイルしません。
マクロ名が未定義ならば、条件を判定しコード2もしくはコード3のいずれかをコンパイルします。
#If Defined(マクロ名) ... と同じです。
関連項目
注意事項
マクロ名に組み込みマクロを使用した場合、評価は常に真となり、分岐が行われません。
例えば、下記のコードでは、ロボットタイプに関係なく常に <Code1>が適用され、<Code2>が適用されることはありません。
#Ifdef __SCARA_ROBOT__この分岐を正しく行うには、#If文を使用して、以下のように記述する必要があります。
... <Code1>
#Else
... <Code2>
#EndIf
#If __SCARA_ROBOT__ ... <Code1> #Else ... <Code2> #EndIf
用例
'!TITLE "条件コンパイル"
' マクロが定義されているか判断し、aaaに値を加算
#Define TEST2 20
Sub Sample_IfdefEndif
Dim aaa As Integer
aaa = 10
' マクロ名TESTが定義されている場合
#Ifdef TEST
aaa = aaa + 10
' メッセージ出力ウィンドウにaaaの値を表示
PrintDbg "aaa = " & aaa
' マクロ名TEST2が定義されている場合
#Elif Defined(TEST2)
aaa = aaa + 20
' メッセージ出力ウィンドウにaaaの値を表示
PrintDbg "aaa = " & aaa
' マクロ名TEST、TEST2が共に定義されていない場合
#Else
aaa = aaa + 30
' メッセージ出力ウィンドウにaaaの値を表示
PrintDbg "aaa = " & aaa
#Endif
End Sub
ID : 116