Почему при этом обращении к AfxWinInit я получаю предупреждение C6309? - PullRequest
0 голосов
/ 16 августа 2010

во время статического анализа кода я обнаружил странный. На такой звонок:

if(!AfxWinInit(moduleHandle,NULL,::GetCommandLine(),0)

Я получаю предупреждение C6309 по второму параметру (C6309: аргумент 2 равен нулю: он не соответствует спецификации функции AfxWinInit)

Документы говорят, что для приложений Win32 второй параметр должен быть NULL, поэтому вопросы:

a) Что не так, мой код, объявление AfxWinInit или статический анализ кода?

Заранее спасибо!

1 Ответ

3 голосов
/ 16 августа 2010
    friend BOOL AFXAPI AfxWinInit(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance,
            _In_z_ LPTSTR lpCmdLine, _In_ int nCmdShow);

Мне кажется, что второй аргумент должен был быть аннотирован как _In_opt_.Из документации SAL :

Дополнительная опция Описывает, является ли сам буфер необязательным.Эти аннотации могут применяться к значениям в слое параметров, слое возвращаемого значения или слое Pre / Post.

  • (нет) Указатель на буфер не должен быть NULL.
  • opt_ Указатель на буфер может быть NULL.Он будет проверен перед разыменованием.
...