当类方法和宏具有相同的名称时如何解决它
How to resolve it when class method and macro have the same name?
>我在升级类时遇到了问题,需要导入外部库。
例如,我正在编辑一个名为 CFoo
的类,该类具有公共方法SendMessage()
。它工作正常,直到我需要包含一个库 - 其中包含一个名为 SendMessage()
的宏。它对我当前的代码造成了完全的混乱,因为包含SendMessage()
的所有部分都被宏替换了。
我发现了一个关于宏命名冲突的类似问题:如何避免与 Windows 头文件中定义的宏发生名称冲突?
但是,在我的情况下,公共方法名称无法更改,因为它已经发布并在其他项目中使用。
有没有办法不使用或包含特定的宏,或者指定在调用函数时是否应使用宏或方法?
谢谢。
如果标准合规性不是必需的,请尝试push_macro
/pop_macro
编译指示
#pragma push_macro("SendMessage")
#undef SendMessage
//your stuff
#pragma pop_macro("SendMessage")
它适用于MSVC,GCC和CLANG
我有一个模糊的方法来解决它。
使用#ifdef
检查..
如果是这样,请在调用函数之前使用 " #undef
" 取消定义它。
相关文章:
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- Ardunio UNO解决了多个重叠的定时器循环
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 两个文件使用彼此的功能-如何解决
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 在java中解决这段代码时面临循环中的问题
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 难以理解某些人解决IOI问题的源代码
- visual c++,如何获取解决方案目录中的代码
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 节俭并发:未解决的外部问题
- IpOpt拒绝解决不受约束的问题
- 如何解决这个超硬恒星的创造问题
- 循环无限运行C++解决骑士之旅问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- 为什么这段代码不起作用,我该如何解决?