为什么WinMain
有两种返回类型?关于签名:int WINAPI WinMain(HINSTANCE p1,HINSTANCE p2,LPSTR p3,int p4)
如果我删除它,将报告这样的警告:
warning C4007: 'WinMain' : must be '__stdcall'
或者我在读INT WINAPI
错?
UPDATE
我想这两个变体被认为是同WINAPI
,无工作:
int __declspec WinMain
int __declspec(stdcall) WinMain
但是'__declspec(stdcall)'是什么意思呢?常规形式应该是:'[return type] function_name(parameters)',对吧? – user198729 2010-05-02 11:31:24
@ user198729:http://en.wikipedia.org/wiki/Calling_convention。是的,通常它应该是'returnType func(parameters)',但'__declspec'是微软的扩展。 – jamesdlin 2010-05-02 11:33:14
@ user198729:这是函数声明的最简单形式。该函数也可以声明为'static'或'inline',它影响函数声明的含义,但不影响返回类型。 'WINAPI'是一个特定于窗口的扩展,它指定调用约定,但不会改变函数声明的含义。 – 2010-05-02 11:37:22