基本上,当在我的 VB6 代码中声明 Windows API 函数时,会附带许多需要声明或与该函数一起使用的常量,实际上,通常这些常量中的大多数都不会被使用,您最终只会使用一个在进行您的 API 调用时,它们大约是这样,所以我使用条件编译参数来排除这些(和其他东西),使用类似这样的东西:
IncludeUnused = 0 : Testing = 1
(我就是这样设置两个条件编译参数的(默认都是 bool 类型)
因此,许多未使用的东西被排除在外:
#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 属性窗口“Make”选项卡的Conditional Compilation Argument 输入字段中声明的Testing bool 值。 Testing bool 值用于在我处于测试模式时显示消息框和类似的东西,当然,如果我有 Testing,这些消息框将被删除(不显示) > 设置为 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 bool 值来删除未使用的代码...?
如果有人能阐明这些想法,我将不胜感激。
最佳答案
很可能大小差异很小,exe大小被填充到下一个512或1024字节对齐。尝试使用 zip 压缩 exe 并查看 zip 文件大小是否不同。
关于performance - 当我使用条件编译参数排除代码时,为什么 VB6 EXE 文件大小没有变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320285/