我想知道在C++中进行Windows开发时使用注释是否重要?例如,
#include <windows.h>
int WINAPI WinMain(
__in HINSTANCE hInstance,
__in HINSTANCE hPrevInstance,
__in LPSTR lpCmdLine,
__in int nCmdShow
){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这可以写成:
#include <windows.h>
int WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不使用它们我失去了什么?我很难弄清楚这些是什么,似乎没有为凡人写的任何指南.
您必须使用旧版本的SDK.7.0版声明了这样的参数:
WinMain (
__in HINSTANCE hInstance,
__in_opt HINSTANCE hPrevInstance,
__in LPSTR lpCmdLine,
__in int nShowCmd
);
Run Code Online (Sandbox Code Playgroud)
注意__in_opt注释,它将参数标记为可选,表示传递NULL是可接受的.这些是SAL注释的早期版本,是源代码注释语言的首字母缩写.有一篇MSDN文章,但它记录了C/C++库#include文件中使用的语法.不太确定SDK组为什么不使用它们,它们往往有点慢.
除了使声明更具可读性,消除C声明的歧义之外,注释对工具也很有用.代码分析器就是很好的例子,它内置于VS2008和VS2010的更高SKU中(它可以捕获编程错误).和P/Invoke Interop Assistant,一个使用从带注释的SDK头文件生成的dbase生成C#或VB.NET p/invoke声明的工具.注释对于生成良好的C#声明至关重要.
您也可以在自己的代码中使用这些注释,如果您这样做,它将自动由代码分析器验证.请使用MSDN文章中记录的现代语法.我认为所需的sal.h标头几乎被引入任何#includes CRT标头的源文件.