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つ用意できないのでしょうか。
試してみましたが、こちらでは再現しませんでした。どこかで検証ミスしていませんか?
・スペルミス(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
'--------------------
魔界の仮面弁士様
回答ありがとうございます。
ご指摘の通り、スペルミスでした。
これからは気をつけます。
ツイート | ![]() |