基本上,在我的 VB6 代码中声明 Windows API 函数时,会附带许多需要声明或与该函数一起使用的常量,实际上,通常这些常量中的大多数都没有使用,您最终只使用其中一个或因此,在进行 API 调用时,我使用条件编译参数来排除这些(和其他东西),使用如下所示:
IncludeUnused = 0 : Testing = 1
(这就是我设置两个条件编译参数的方式(默认情况下它们是布尔类型)。
因此,许多未使用的东西被排除在外:
#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 属性窗口“制作”选项卡的条件编译参数输入字段中声明的测试布尔值。测试布尔值用于在我处于测试模式时显示消息框和类似的东西,当然,如果我将测试设置为 0(当我在测试时显然是 1),这些消息框会被删除(不显示) )。
问题是,我尝试将IncludeUnused和Testing设置为 0 和 1,反之亦然,总共四 (4) 个组合,无论我将这些值设置为哪种组合,我的 VB6 EXE 的输出 EXE 文件大小都不会改变!使用 Fast Code 和 Small Code 编译为 Native Code 时,它始终为 49,152。
此外,如果我在Testing和IncludeUnused的四 (4) 种组合下编译为 p 代码,无论如何我总是以文件大小 32,768 结束。
这让我发疯,因为它让我相信实际上并没有发生任何变化,即使它确实发生了。为什么当从编译中排除代码段时,文件大小仍然相同?我错过了什么或做错了什么,或者我计算错了什么?
我已经考虑过可能 VB6 自动不编译未用于最终输出 EXE 的代码的选项,但我从几个来源中读到这不是真的,因为如果它被包含,它会被编译(纠正我如果我错了),如果这是对的,那么就不需要使用IncludeUnused布尔值来删除未使用的代码......?
如果有人能阐明这些想法,我将不胜感激。