次のように定義されたいくつかのオプションを持つライブラリがあります。
#define shouldShowToolbar YES
#define shouldAlignToLeft YES
etc..
そして、私は実際にそれらを外部から置き換える方法を探しています(ライブラリを変更せずに、将来の更新で壊れるので)。それは可能ですか、それとも、更新が行われるたびにライブラリのソース コード (私が持っているもの) を変更する運命にありますか?
次のように定義されたいくつかのオプションを持つライブラリがあります。
#define shouldShowToolbar YES
#define shouldAlignToLeft YES
etc..
そして、私は実際にそれらを外部から置き換える方法を探しています(ライブラリを変更せずに、将来の更新で壊れるので)。それは可能ですか、それとも、更新が行われるたびにライブラリのソース コード (私が持っているもの) を変更する運命にありますか?
がある#undef
#include "library_header.h" /* Which defines the macro. */
#undef shouldShowToolbar /* You undef it. */
#define shouldShowToolbar NO /* If you want, you can redefine it. */
http://gcc.gnu.org/onlinedocs/cpp/Undefining-and-Redefining-Macros.html
コードのセクションで特定のマクロを有効にしたくない場合で、そのマクロ名もわかっている場合は、次を使用できます。
#undef shouldShowToolbar
/* Your code */
#define shouldShowToolbar
これはマクロの定義を完全に解除することはありません。コードのどの部分が実際にそれを必要としているかはわかりません。
これらは、コンパイル時にハードコードされる値です。プロジェクトでライブラリをコンパイルすると、コンパイルリストの後半でコンパイルされるファイルでそれらを再定義できるはずです。それには特別なキーワードがあると思います。そうでなければ、ライブラリーの YES を置き換えたいと言っているようなものです。
私の知る限り、プリプロセッサディレクティブはコンパイル前に実行されます。したがって、その後、何かを変更する機会はありません。