Sh4*_*4pe 4 c++ macros c-preprocessor
我想用一个具有相同名称的正确typedef替换宏.我有
#define FooType char*
Run Code Online (Sandbox Code Playgroud)
在第三方库中,这打破了我的一些代码(更确切地说:我被迫使用的一些代码以及我自己无法改变的代码).我想用一个同名的typedef替换它,然后#undef用宏替换它.我试过这样的事情:
#define TMP_MACRO FooType
#undef FooType
typedef TMP_MACRO FooType;
#undef TMP_MACRO
Run Code Online (Sandbox Code Playgroud)
但预处理器将其扩展为:
typedef FooType FooType;
Run Code Online (Sandbox Code Playgroud)
(至少那是g++ -E告诉我的).所以宏TMP_MACRO不会立即扩大.由于'FooType'不存在,因此无法编译.
如何FooType用适当的类型替换宏,然后取消定义宏?或者这不可能吗?
一个typedef声明通常是在同一行,但行号毫无意义的编译器.
typedef FooType
#undef FooType
FooType;
Run Code Online (Sandbox Code Playgroud)