为什么在对 AfxWinInit 的调用中我收到警告 C6309?
在进行一些静态代码分析时,我发现了一个奇怪的问题。在这样的调用中:
if(!AfxWinInit(moduleHandle,NULL,::GetCommandLine(),0)
我在第二个参数处收到警告 C6309 (C6309:参数 2 为空:它不符合 AfxWinInit 的函数规范)
文档说,对于 Win32 应用程序,第二个参数必须为 NULL,因此问题是:
a) 我的代码、AfxWinInit 声明或静态代码分析出了什么问题?
提前致谢!
while doing some static code analysis I've found a weird one. On a call like this one:
if(!AfxWinInit(moduleHandle,NULL,::GetCommandLine(),0)
I get the warning C6309 at the second parameter (C6309: argument 2 is null: it does not adhere to function specification of AfxWinInit)
Docs say that for Win32 applications the second parameter must be NULL so the questions is:
a) What's wrong, my code, the AfxWinInit declaration or the static code analysis?
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来这是错误的,第二个参数应该被注释为
_In_opt_
。来自SAL 注释文档:可选选项
描述缓冲区本身是否是可选的。这些注释可以应用于参数层、返回值层或前/后层中的值。
指向缓冲区的指针不能为 NULL。
指向缓冲区的指针可能为 NULL。在取消引用之前将对其进行检查。
That looks wrong to me, the 2nd argument should have been annotated as
_In_opt_
. From the SAL Annotations documentation:Optional Option
Describes if the buffer itself is optional. These annotations can be applied to values in the Parameters layer, Return Value layer, or Pre / Post layer.
The pointer to the buffer must not be NULL.
The pointer to the buffer might be NULL. It will be checked before being dereferenced.