我想用具有相同名稱的正確typedef替換宏。我有用相同名稱的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
,然後取消宏定義?或者這是不可能的?
從向第三方提交錯誤報告開始,讓罪人受到懲罰。 – pmr 2012-07-24 15:23:01
也想到了這一點 - 這是一個令人印象深刻的例子,爲什麼宏是邪惡的:D – Sh4pe 2012-07-24 15:42:33