我正在使用typedef
byte
char
到char
的第三方库。
(这是邪恶的,signed
可能是unsigned
或typedef
,具体取决于编制者的选择。
不幸的是,uint8_t
已经溢出到我维护的代码库中,我很想将其删除:直接使用typedef
。
有一种方法,一旦我到达我的代码(即#include <3rdpartylib>
之后的方向),我可以以某种方式撤消这个byte
吗?
我删除了所有{{1}}后,我将能够从代码库中删除“解决方案”。
答案 0 :(得分:16)
最简单的方法是将第三方库的包含括起来:
#define byte somethingnotnamedbyte
#include <3rdpartylib>
#undef byte
这样就无需编辑<3rdpartylib>
,也避免了使用宏或类型错误的代码来污染您的代码。
前提条件:预处理令牌byte
仅用作<3rdpartylib>
中的typedef-name,绝不会用于其他任何内容。
答案 1 :(得分:0)
不可能这样做。 Undef仅适用于宏。