プロが教える店舗&オフィスのセキュリティ対策術

条件付コンパイルで、
『#If 1 Then』と『#If 0 Then』の条件の違いを教えてください。


『#If ○○○=1 Then』などの場合はわかるのですが、
単に『#If 1 Then』の場合は何をもって真となるのでしょうか?

よろしくお願いいたします。

A 回答 (4件)

条件式は、強制的に「True」又は「False」に解釈されます。



で、「数値」を「True」又は「False」に解釈する場合、
「0」は「False」、「0以外」は「True」になります。
http://msdn.microsoft.com/library/ja/default.asp …

つまり、
『#If 1 Then』は、「必ずTrue」=常に有効
『#If 0 Then』は、「必ずFalse」=常に無効
に成ります。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

>『#If 1 Then』は、「必ずTrue」=常に有効
この場合、『#If 1 Then』と『#End If』を削除して、
間の処理の記述だけを残した場合と同等の処理が行われるのでしょうか?

>『#If 0 Then』は、「必ずFalse」=常に無効
この場合、『#If 0 Then』から『#End If』を(間の処理の記述を含み)全て削除しても
同等の処理が行われるのでしょうか?

お礼日時:2007/09/10 17:08

バグなどの修正でリビジョンをあげたやAPIなどが変更されていて旧バージョンと互換性が無いとき場合に以前の処理をそのまま残しておく時に


#If 0 then
...
#end if
でくくっておいたりしますよ

実行ファイルには影響を与えないがドキュメントとして残しておきたいなんて場合です
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

なるほど。
『#If 0 then』はコメント文代わりのようなものということでしょうか。

お礼日時:2007/09/12 15:24

> >『#If 1 Then』は、「必ずTrue」=常に有効


> この場合、『#If 1 Then』と『#End If』を削除して、
> 間の処理の記述だけを残した場合と同等の処理が行われるのでしょうか?

そうなりますね。

> >『#If 0 Then』は、「必ずFalse」=常に無効
> この場合、『#If 0 Then』から『#End If』を(間の処理の記述を含み)全て削除しても
> 同等の処理が行われるのでしょうか?

そうなりますね。

#ちなみに、実行可能な行(ブレイクポイントが設定可能な行)に関して言えば、
#その行が有効か?は、その行にブレイクポイントを設定してみれば、
#容易に判断できます。
#無効になった行には、ブレイクポイントが設定できませんから。
    • good
    • 0
この回答へのお礼

追加のご回答ありがとうございます。
おかげさまでスッキリできました。

『#If 0 Then』では確かにブレイクポイントの設定ができませんでした。
ありがとうございます。

お礼日時:2007/09/11 08:57

>『#If ○○○=1 Then』などの場合はわかるのですが、



if 文で必要なのは比較式の結果です。(True/False)
式の変わりに結果(値)を書き込んでも機能すると言うことでしょう。
If True Then MsgBox "1"
If False Then MsgBox "0"

ヘルプ(VBA)には、
『他の数値型をブール型の値に変換すると、0 は偽 (False) になり、0 以外の値はすべて真 (True) になります。』とあります。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

申遅れましたが、Visual Basic 6.0を使用しております。

具体的には、
『プロジェクトプロパティ - 実行ファイルの作成 - 条件付きコンパイル引数』
の項目に0でない値が入力されている場合は全て真となる、
という認識で宜しいのでしょうか?

お礼日時:2007/09/10 17:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています