当我使用条件编译参数排除代码时,为什么VB6 EXE文件大小没有变化?

Erx*_*der 2 compiler-construction vb6 performance compilation compiler-optimization

基本上,在我的VB6代码中声明Windows API函数时,需要声明或使用此函数的这些常量,实际上,通常大多数这些常量都没有使用,你最终只使用其中一个或者因此,在进行API调用时,我使用条件编译参数来使用以下内容排除这些(和其他内容):

IncludeUnused = 0 : Testing = 1
Run Code Online (Sandbox Code Playgroud)

(这是我设置两个条件编译参数的方法(默认情况下它们是布尔类型).

因此,许多未使用的东西被排除在外:

#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
Run Code Online (Sandbox Code Playgroud)

我还使用类似的包装器,使用VB6属性窗口"Make"选项卡中Conditional Compilation Argument输入字段中声明的Testing Boolean .该测试布尔用于当我在测试模式下显示消息框之类的东西,当然,去除这些消息盒装(不显示),如果我有测试设置为0(和它显然是1,当我测试).

问题是,我尝试将IncludeUnusedTesting设置为0和1,反之亦然,共有四(4)种组合,无论我将这些值设置为什么组合,我的VB6 EXE的输出EXE文件大小都不会改变!使用快速代码编译为本机代码时,以及使用小代码时,始终为49,152.

另外,如果我在TestingIncludeUnused的四(4)种组合下编译为p代码,无论如何我总是以32,768的文件大小结束.

这让我发疯,因为它让我相信实际上并没有发生任何变化,即使它确实存在.为什么当从编译中排除代码段时,文件大小仍然相同?我错过了什么或做错了什么,或者我错误估算了什么?

我考虑过这个选项,也许VB6自动不会编译未用于最终输出EXE的代码,但我从一些消息来源读到这不是真的,因为,如果包含它,它就被编译(正确的我)如果我错了),如果这是正确的,那么就没有必要使用IncludeUnused布尔来删除未使用的代码......?

如果有人能够对这些想法有所了解,我会非常感激.

Vil*_*nde 5

很可能是尺寸差异非常小,并且exe大小被填充到下一个512或1024字节对齐.尝试使用zip压缩exe文件,看看zip文件大小是否不同.