私の c/obj-c コード (clang でビルドされた iOS アプリ) には、#ifdefs
. これらの関数から呼び出され、他の関数から呼び出されないコード (デッド コード) がリンク時に取り除かれる (削除される) ことを確認したいと考えています。私は試した:
- 削除する必要がある関数にローカル リテラル char[] を追加します。実行可能ファイルで実行されている場合、文字列は引き続き表示
strings
されます。 - 削除する必要がある機能を追加します。文字列を実行するとき、関数名は引き続き表示されます。
あなたが尋ねる前に、私はリリース用にビルドしており、すべてのストリップ設定 (明らかにデッドコード ストリップを含む) が有効になっています。
問題は実際には xcode/apple/iOS 固有のものではありません。答えは、どの POSIX 開発プラットフォームでもほぼ同じはずです。