繁体   English   中英

如何解释 WinMain 上的文档?

[英]How to interpret docs on WinMain?

请查看WinMain 文档

int __clrcall WinMain(
  [in] HINSTANCE hInstance,
  [in] HINSTANCE hPrevInstance,
  [in] LPSTR     lpCmdLine,
  [in] int       nShowCmd
);

我应该如何解释这个? 方括号表示in属性是可选的吗? 如果是这样,它看起来像什么。

我尝试使用以下标志在 Visual Studio 中编译一个简单的应用程序:

/clr /permissive- /Zc:twoPhase-
#include <Windows.h>

int __clrcall WinMain(
    [in] HINSTANCE hInstance,
    [in] HINSTANCE hPrevInstance,
    [in] LPSTR     lpCmdLine,
    [in] int       nShowCmd
) {
    return 0;
}

但它不会编译并给出以下错误。

C2373 WinMain': redefinition; different type modifiers
C2337 'in': attribute not found
E0337 linkage specification is incompatible with previous "WinMain" (declared at line 1033) WinBase.h
E0147 declaration is incompatible with "int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)" (declared at WinBase.h)

[in]装饰仅用于文档。 您可以忽略它们并像示例WinMain 文档中那样实现WinMain

如果为多字节(又名 ANSI)构建:

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR cmdline, int cmdshow)
{
    return MessageBoxA(nullptr, "hello, world", "caption", 0);
}

如果为 Unicode 构建:

#include <Windows.h>

int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPWSTR cmdline, int cmdshow)
{
    return MessageBoxW(nullptr, L"hello, world", L"caption", 0);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM