我在升级类时遇到问题,需要导入外部库。
例如,我正在编辑一个名为CFoo
的类,它有一个公共方法SendMessage()
。
它工作正常,直到我需要包含一个库 - 其中包含一个名为SendMessage()
的宏。它导致我当前代码完全混乱,因为包含SendMessage()
的所有部分都被宏替换。
我发现了一个关于宏命名冲突的类似问题: How do I avoid name collision with macros defined in Windows header files?
但是在我的情况下,公共方法名称不能更改,因为它已经发布并在其他项目中使用。
有没有办法不使用或包含特定的宏,或者指定在调用函数时是否应该使用宏或方法?
非常感谢。
答案 0 :(得分:0)
我有一个模糊的方法来解决它。
使用#ifdef
..
如果是这样,请使用" #undef
"取消定义它。在调用你的函数之前。
答案 1 :(得分:0)
如果不符合标准合规性,请尝试push_macro
/ pop_macro
pragma
#pragma push_macro("SendMessage")
#undef SendMessage
//your stuff
#pragma pop_macro("SendMessage")
适用于MSVC,GCC和CLANG