【发布时间】:2021-11-01 13:48:58
【问题描述】:
<windows.h> 为 WinAPI 的 Ansi 和 Unicode 版本定义宏。
我的类库中有一个名为SendMessage 的函数。在包含我的库之前包含<windows.h> 之前它工作正常。在这种情况下,SendMessage 被宏覆盖,函数名称变为SendMessageA 或SendMessageW。
是否有可能在不更改函数名称的情况下以某种方式处理它以保存与旧版本库的兼容性?
【问题讨论】:
-
我很确定 Herb Sutter 或 Raymond Chen 写过一篇关于这个确切问题的文章,但我再也找不到了。
-
真正的问题是您选择使用您的库的客户端可能无法命名的符号。
-
这就是现代 C 库为其函数、类型和宏添加前缀的原因
标签: c++ c windows winapi macros