gpt4 book ai didi

c++ - 防止 C 预处理器执行特定的宏替换

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:56 25 4
gpt4 key购买 nike

如何告诉预处理器不要替换特定的宏?

具体问题如下:Windows头文件定义了GetMessage宏。

我的 C++ 头文件和我的 API 有一个 GetMessage 方法。我不想重命名我的方法。但是在 Windows 上使用 API 时,包括 windows.h 将我的 GetMessage 方法调用替换为 GetMessageA。

最佳答案

你试过只是做一个

#undef GetMessage

or even

#ifdef GetMessage#undef GetMessage#endif

and then calling the windows GetMessageA or GetMessageW directly, whichever is appropriate.

you should know if you are using char* for wchar_t8..

(thanks don.neufeld)

Brian also says thatJus some useful info, you can also use the #pragma push_macro/pop_macro to push and pop macro definitions. This is great if you want to override a macro definition in a block of code:

#pragma push_macro("GetMessage")
#undef GetMessage

// Your GetMessage usage/definition here

#pragma pop_macro("GetMessage")

不过我怀疑这是 MS 特有的功能,所以请记住这一点。

关于c++ - 防止 C 预处理器执行特定的宏替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com