0

次のように定義されたいくつかのオプションを持つライブラリがあります。

#define shouldShowToolbar YES
#define shouldAlignToLeft YES
etc..

そして、私は実際にそれらを外部から置き換える方法を探しています(ライブラリを変更せずに、将来の更新で壊れるので)。それは可能ですか、それとも、更新が行われるたびにライブラリのソース コード (私が持っているもの) を変更する運命にありますか?

4

4 に答える 4

3

がある#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

于 2012-04-04T14:15:45.570 に答える
1

コードのセクションで特定のマクロを有効にしたくない場合で、そのマクロ名もわかっている場合は、次を使用できます。

 #undef shouldShowToolbar 

/* Your code */

 #define shouldShowToolbar 

これはマクロの定義を完全に解除することはありません。コードのどの部分が実際にそれを必要としているかはわかりません。

于 2012-04-04T14:16:12.663 に答える
1

これらは、コンパイル時にハードコードされる値です。プロジェクトでライブラリをコンパイルすると、コンパイルリストの後半でコンパイルされるファイルでそれらを再定義できるはずです。それには特別なキーワードがあると思います。そうでなければ、ライブラリーの YES を置き換えたいと言っているようなものです。

于 2012-04-04T14:17:10.353 に答える
0

私の知る限り、プリプロセッサディレクティブはコンパイル前に実行されます。したがって、その後、何かを変更する機会はありません。

于 2012-04-04T14:16:00.507 に答える