注册 登录
编程论坛 C语言论坛

求助一个 C 语言的宏展开的问题

小白级的小黑 发布于 2023-07-19 15:46, 760 次点击
最近简单的学一下 Win32 编程
开始想着 WinMain 参数那么长,想用宏给它简化一下。

我是这么写的:
#define WinBegin(...) WINAPI WinMain(HINSTANCE hNowInstance, HINSTANCE hPrevInstance, PTCHAR lpCmdLine, int nShowCmd)


但编译时提示以下警告:
warning: in expansion of macro 'WinBegin'
这要怎么解决?
2 回复
#2
yiyanxiyin2023-07-19 17:14
警告而已, 但你要保证调用的地方正确
#3
rjsp2023-07-20 08:42
先看看正确的声明
int WINAPI   WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR l pCmdLine, int nShowCmd );
int WINAPI  wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd );
int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd );

再看看你的
WINAPI WinMain(HINSTANCE hNowInstance, HINSTANCE hPrevInstance, PTCHAR lpCmdLine, int nShowCmd)
牛头不对马嘴,四不像呀

程序代码:
#include <windows.h>
#include <tchar.h>

#define WinBegin(...) WINAPI _tWinMain( HINSTANCE hNowInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd )

int WinBegin(你声明了接受参数,却不使用)
{
    return 0;
}
1