我想用具有相同名称的正确 typedef 替换宏。我有
#define FooType char*
在第三方库中,这破坏了我的一些代码(更准确地说:我被迫使用的一些代码,我自己无法更改)。我想用同名的 typedef 替换它,然后#undef
用宏替换它。我尝试过这样的事情:
#define TMP_MACRO FooType
#undef FooType
typedef TMP_MACRO FooType;
#undef TMP_MACRO
但是预处理器将其扩展为:
typedef FooType FooType;
(至少那是g++ -E
告诉我的)。所以宏TMP_MACRO
不会立即展开。由于 'FooType' 不存在,因此无法编译。
如何FooType
用适当的类型替换宏并在之后取消定义宏?或者这是不可能的?