我正在尝试在我的“wnd”命名空间中声明自己的“CreateWindow”,但gcc会提示“错误:宏”CreateWindowA“需要11个参数,但只提供了1个|”。请告诉我如何正确获取它。
以下是代码:
#include <windows.h>
namespace wnd
{
void CreateWindow()
{
}
}
#include <windows.h>
namespace wnd
{
void CreateWindow()
{
}
}
在Windows API中,名称CreateWindow
已经存在。不幸的是,您的命名空间(尝试得不错!)没有效果,因为原始符号是一个宏。
只要包括windows.h
,就没有好的解决方法。您将不得不为函数选择不同的名称。
有一个名为CreateWindow
的宏与您的函数名称冲突。
最好的做法是只是更改您的函数名称。
如果您坚持可以使用#undef CreateWindow
,但这会导致每个包含您文件的文件都取消该宏,这是有问题的。
所以您需要堆叠并将其带回:
#pragma push_macro("CreateWindow")
#undef CreateWindow
void CreateWindow()
{
}
#pragma pop_macro("CreateWindow")
pragma
范围内可见。