gpt4 book ai didi

c++ - 如何避免与 Windows 头文件中定义的宏发生名称冲突?

转载 作者:IT老高 更新时间:2023-10-28 22:17:51 26 4
gpt4 key购买 nike

我有一些 C++ 代码,其中包含一个名为 CreateDirectory(). 的方法。以前代码只使用了 STL 和 Boost,但我最近不得不包含 <windows.h>所以我可以查找CSIDL_LOCAL_APPDATA .

现在,这段代码:

filesystem.CreateDirectory(p->Pathname()); // Actually create it...

不再编译:

error C2039: 'CreateDirectoryA' : is not a member of ...

对应winbase.h中的这个宏:

#ifdef UNICODE
#define CreateDirectory CreateDirectoryW
#else
#define CreateDirectory CreateDirectoryA
#endif // !UNICODE

预处理器正在重新定义我的方法调用。有没有办法避免这种命名冲突?或者我必须重命名我的CreateDirectory()方法?

最佳答案

如果你只是重命名你的 CreateDirectory 方法,你会更好。如果您需要使用 Windows API,与 Windows.h 竞争是一场失败的战斗。

顺便说一句,如果您在包含 windows.h 时一致,它仍将被编译。 (虽然你可能在其他地方有问题)。

关于c++ - 如何避免与 Windows 头文件中定义的宏发生名称冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2321713/

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