マクロを同じ名前の適切な typedef に置き換えたい。私は持っている
#define FooType char*
サードパーティのライブラリで、これによりコードの一部が壊れます(より正確には、使用を余儀なくされ、自分で変更できないコード)。#undef
それを同じ名前の typedef に置き換えてから、マクロに置き換えたいと思います。私はそのようなことを試しました:
#define TMP_MACRO FooType
#undef FooType
typedef TMP_MACRO FooType;
#undef TMP_MACRO
しかし、プリプロセッサはこれを次のように拡張します。
typedef FooType FooType;
(少なくともそれはg++ -E
私に言ったことです)。したがって、マクロTMP_MACRO
はすぐには展開されません。「FooType」がないため、コンパイルされません。
FooType
マクロを適切な型に置き換えて、後でマクロを未定義にするにはどうすればよいですか? それともこれは不可能ですか?