【发布时间】:2018-02-05 07:51:32
【问题描述】:
在一个小型微型嵌入式项目中,我发现我编译的代码大小比预期的要大得多。原来是因为我包含了使用 assert() 的代码。在包含的代码中使用 assert 是合适的,但导致我编译的代码大小几乎翻了一番。
问题不在于是否/何时应该使用断言,而是编译器/链接器如何决定为断言包含所有必要的开销。
我在另一篇帖子中的原始问题:
如果有人可以向我解释 gcc 在调用 assert 时如何决定包含库函数会很有帮助?我看到 assert.h 声明了一个外部函数 __assert_func。链接器如何知道从库中引用它,而不仅仅是说“对 __asert_func 的未定义引用”?
【问题讨论】: