[VB6.0]条件付コンパイル引数について

解決


ちび  2010-05-24 14:52:26  No: 102390  IP: [192.*.*.*]

VB6.0SP6
WinXP

プロジェクトプロパティ-実行可能ファイルの作成タブ内にある
条件付コンパイル引数に、DEBUG_TEST=1と設定しました。

標準モジュールには、A.bas、B.basの2ファイルがあり、
A.basには
#if DEBUG_TEST=1 then
public sub aaa()
  ・・・処理
end sub
#endif

B.basには
#if DEBUG_TEST=0 then
public sub aaa()
  ・・・処理
end sub
#endif

としました。

完全コンパイル後に開始を実行すると、
コンパイルエラー
名前が適切ではありません;aaa
と表示されます。

コンパイルオプションで、きったとしても
同じ関数名の関数は2つ用意できないのでしょうか。

編集 削除
魔界の仮面弁士  2010-05-24 16:36:17  No: 102391  IP: [192.*.*.*]

試してみましたが、こちらでは再現しませんでした。どこかで検証ミスしていませんか?

・スペルミス(DEBUG_TEXT と書いたとか)していたため、両方ともコンパイルされていた
・実は C.bas にも Sub aaa() が存在していた。


「#If DEBUG_TEST = 0 Then」「Public Sub aaa()」ではなく
「#if DEBUG_TEST=0 then」「public sub aaa()」になっているところを見ると、
実際のコードではなく、掲示板上で書いたイメージコードのようですし。



なお当方では、下記のコードで検証しています。

  条件付きコンパイル定数無し:Moduel2.aaa が呼び出された。
  「DEBUG_TEST = 0」:Moduel2.aaa が呼び出された。
  「DEBUG_TEST = 1」:Moduel1.aaa が呼び出された。
  「DEBUG_TEST = 2」:★コンパイルエラー:Sub または Function が定義されていません。


'--------------------
'Form1(Form1.frm)
Option Explicit
Private Sub Form_Load()
    aaa    '★
End Sub

'--------------------
'Module1(a.bas)
Option Explicit
#If DEBUG_TEST = 1 Then
Public Sub aaa()
  MsgBox "Module1"
End Sub
#End If

'--------------------
'Module2(b.bas)
Option Explicit
#If DEBUG_TEST = 0 Then
Public Sub aaa()
  MsgBox "Module2"
End Sub
#End If
'--------------------

編集 削除
ちび  2010-05-24 17:25:52  No: 102392  IP: [192.*.*.*]

魔界の仮面弁士様

回答ありがとうございます。
ご指摘の通り、スペルミスでした。
これからは気をつけます。

編集 削除