基本的に、VB6コードでWindows API関数を宣言する場合、この関数で宣言または使用する必要のあるこれらの多くの定数が付属しています。実際、通常、これらの定数のほとんどは使用されず、そのうちの1つのみを使用することになります。したがって、API呼び出しを行うときは、条件付きコンパイル引数を使用して、次のようなものを使用してこれら(およびその他のもの)を除外しています。
IncludeUnused = 0 : Testing = 1
(これは私が2つの条件付きコンパイル引数を設定する方法です(それらはデフォルトでブール型です)。
したがって、多くの未使用のものは次のように除外されます。
#If IncludeUnused Then
' Some constant declarations and API declarations go here, sometimes functions
' and function calls go here as well, so it's not just declarations and constants
#End If
また、VB6プロパティウィンドウの[作成]タブの[条件付きコンパイル引数]入力フィールドで宣言されたテストブール値を使用して、同様のラッパーを使用します。Testing Booleanは、テストモードのときにメッセージボックスなどを表示するために使用されます。もちろん、 Testingを0に設定すると(テスト中は明らかに1になります)、これらのメッセージボックスは削除されます(表示されません) 。 )。
問題は、IncludeUnusedとTestingを0と1に、またはその逆に、合計4つの組み合わせを設定しようとしたことです。これらの値をどの組み合わせに設定しても、VB6EXEの出力EXEファイルサイズは変更されません。 !!Fast Codeを使用してネイティブコードにコンパイルする場合、およびSmall Codeを使用する場合は、常に49,152です。
さらに、 TestingとIncludeUnusedの4つの組み合わせでpコードにコンパイルすると、ファイルサイズは常に32,768になります。
これは私を夢中にさせています。なぜなら、実際には変化が起こっていなくても、実際には変化が起こっていないと信じるようになっているからです。コードのセグメントがコンパイルから除外されても、ファイルサイズが同じであるのはなぜですか?何が欠けているか、間違っているのか、または何を誤って計算したのですか?
おそらくVB6が最終出力EXEに使用されていないコードを自動的にコンパイルしないというオプションを検討しましたが、これが含まれている場合はコンパイルされるという点で、これは真実ではないことをいくつかのソースから読みました(訂正してください私が間違っている場合)、そしてこれが正しい場合は、IncludeUnusedブール値を使用して未使用のコードを削除する必要はありません...?
誰かがこれらの考えに光を当てることができれば、私はそれを大いに感謝します。