c++ - 为什么在调用 AfxWinInit 时收到警告 C6309?

标签 c++ warnings static-analysis

在进行一些静态代码分析时,我发现了一个奇怪的代码。在这样的电话中:

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/

相关文章:

code-coverage - 计算覆盖率时如何指定Sonar要跳过的方法?

c++ - 信号量上的 WaitForSingleObject 不等待,立即返回

c++ - 在执行 boost::asio::async_read 之后操作 streambuf 是否安全?

c++ - protected 构造函数的实际用途是什么?

c++ - 在 CMake 中,如何使 `TARGET_LINK_LIBRARIES` 抑制来自第 3 方库代码的警告?

c - 我可以使用哪些免费工具来生成 C 代码的程序依赖图

c++ - std::vector 是否将其值类型的赋值运算符用于 push_back 元素?

ios - 该应用程序在 payload/appname.app/appname : _terminateWithStatus 中引用了非公共(public)选择器

ios - 按下 actionSheet 按钮后的警告消息

c++ - Boost.Format 的编译时检查