我的 c/obj-c 代码(一个用 clang 构建的 iOS 应用程序)有一些被#ifdefs
. 我想确保从这些函数调用而不是从其他函数调用的代码(死代码)在链接时被剥离(消除)。我试过:
- 在应该消除的函数中添加本地文字 char[];
strings
在可执行文件上运行时,该字符串仍然可见。 - 添加一个应该被淘汰的功能;运行字符串时,函数名称仍然可见。
在你问之前,我正在为发布而构建,并且所有剥离设置(显然包括死代码剥离)都已启用。
这个问题并不是真正的 xcode/apple/iOS 特定的;我认为答案在任何 POSIX 开发平台上都应该几乎相同。