【发布时间】:2017-03-21 02:44:19
【问题描述】:
我在升级类时遇到问题,需要导入外部库。
例如,我正在编辑一个名为CFoo 的类,它有一个公共方法SendMessage()。
在我需要包含一个库之前它工作正常 - 其中包含一个也名为 SendMessage() 的宏。它会导致我当前的代码完全混乱,因为包含SendMessage() 的所有部分都被宏替换了。
我发现了一个关于宏命名冲突的类似问题: How do I avoid name collision with macros defined in Windows header files?
但是在我的例子中,公共方法名称不能更改,因为它已经发布并在其他项目中使用。
有没有办法不使用或不包含特定的宏,或者指定在调用函数时是否应该使用宏或方法?
非常感谢。
【问题讨论】:
-
我相信你可以使用
(SendMessage)(args...)来调用成员而不是宏。 -
@EJP 甚至方法定义也被 marco 替换了,因为我实际上将库包含在类头文件中。
-
那么你肯定会需要
#undef至少在那个时候。