在进行一些静态代码分析时,我发现了一个奇怪的代码。在这样的电话中:
if(!AfxWinInit(moduleHandle,NULL,::GetCommandLine(),0)
我在第二个参数处收到警告 C6309(C6309:参数 2 为空:它不符合 AfxWinInit 的函数规范)
文档说对于 Win32 应用程序,第二个参数必须为 NULL,所以问题是:
a) 我的代码、AfxWinInit 声明或静态代码分析出了什么问题?
提前致谢!
最佳答案
friend BOOL AFXAPI AfxWinInit(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance,
_In_z_ LPTSTR lpCmdLine, _In_ int nCmdShow);
我觉得这不对,第二个参数应该被注释为 _In_opt_
。来自SAL Annotations文档:
optional
描述缓冲区本身是否可选。这些注释可以应用于参数层、返回值层或前/后层中的值。
- (无) 指向缓冲区的指针不能为 NULL。
- 选择_ 指向缓冲区的指针可能为 NULL。在取消引用之前将对其进行检查。
关于c++ - 为什么在调用 AfxWinInit 时收到警告 C6309?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494137/