特定のプロプロセッサ#define
が存在する必要があるヘッダーファイルを含めていますが、これが残りのコードを汚染することは望ましくありません。
// FOO may or may not already be defined here
#define FOO
#include "Bar.h"
#undef FOO
// FOO should be defined or not, as per the starting state
私は次のように考えています:
#ifdef FOO
#define FOO_DEFINED
#endif
#define FOO
#include "Bar.h"
#ifndef FOO_DEFINED
#undef FOO
#else
#undef FOO_DEFINED
#endif
質問:
上記は機能しますか、つまり、すべてのマクロ定義 (または不足) を以前の状態に復元しますか?
おそらくもっと簡単な解決策はありますか?
FOO が既に定義されているかどうかは問題
#define
ですか?#ifndef
これを防ぐために別のものを追加する必要がありますか?