我使用cnPack Uses cleaner,但一般情况下哪些是无用单位的缺点?
我知道其中一些:
1)当然,如果整个项目中没有使用该单元,那么将会出现无用的资源消耗
2)代码洞察力会产生无用的结果
3)代码洞察力会变慢
但想象一个简单的案例:
答案 0 :(得分:15)
没有。通常,smartlinking的工作方式如下:
结论:确定最终的.exe大小
Free Pascal大致以相同的方式工作,默认值只是不同; Debug目前几乎总是“二进制”(如TD32),而在快照中,默认情况下,smartlinking处于关闭状态。 (在正式版本中,它正在开启)。
此外,人们不应忽视这种程度。 Strutils完全像15kb。
(更新2011-11-01)
对于我希望分享此回复的某人的评论:
基本上他对枚举总是被链接的说法表示怀疑。也许注册一个具有enum类型的已发布属性的类会拖入它们。这个推理有道理,但我还没有测试过。因此,如果在某处查询typeinfo(tenumtype),或者如果在所使用的类的已发布部分中使用它,则只能直接链接枚举的RTTI。 (直接或查询typeinfo(theclass))
答案 1 :(得分:7)
Delphi智能链接器将忽略未使用的代码,因此通常这些“额外”单元的存在不会增加编译程序的大小。
以下是我从this link获得的关于未使用单位缺点的一些观点
答案 2 :(得分:5)
在我看来,最大的问题是你有时会被Delphi的范围规则所困扰。如果在不同的单元中有两个具有相同名称的标识符,则使用此名称是指在uses子句中声明为最新的单元中声明的名称。
如果您遇到问题,您可以随时完全指定标识符。我真正希望看到的是编译器警告,告诉您是否命名了一个标识符,该标识符的标识仅由uses子句范围规则中的最新声明确定。