VC PlusPlus:C28251 'WinMain' に対する整合性のない注釈: このインスタンスには 注釈なし が含まれます。

提供:yonewiki
2023年10月15日 (日) 22:04時点におけるYo-net (トーク | 投稿記録)による版 (→‎概要)

概要

 WinMain関数は4つの引数をとりますが、main関数なら引数を受け取るかどうかさえもプログラマの自由なわけです。ですが、WinMain関数の引数は受け取らないと自分自身にプログラムに割り当てられたプログラム実体番号さえ受け取れず、実体つまりインスタンスを作ることはできません。その引数に注釈というのがないぞっていう警告です。

 (HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)のような


 定義でも十分に実行可能なわけですが、今の流儀としては


 (_In_ HINSTANCE hCurInst, _In_opt_ HINSTANCE hPrevInst, _In_ LPSTR lpsCmdLine, _In_ int nCmdShow)


 と記述することになっています。


 これはSAL=Source Annotation Language ソースコード注釈言語というもので、https://learn.microsoft.com/ja-jp/cpp/code-quality/understanding-sal?view=msvc-170に長々と意味について記述されています。警告されるWinMain関数だけでも注釈をつけときましょうか。ソースコードの安全性を確かめる簡単な方法でより高度な分析を受けることができます。面倒な警告がいっぱい出ますが、あまり気にしていなかった処理の流れがあることに気づかされます。