<< 前へ        次へ >>

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__
... <Code1>
#Else
... <Code2>
#EndIf
この分岐を正しく行うには、#If文を使用して、以下のように記述する必要があります。
#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

<< 前へ        次へ >>