Поделиться через


C6388

Предупреждение C6388: <аргумент> не может иметь значение <значение>, так как это противоречит спецификации функции <имя функции>, строки x, y.

Это предупреждение означает, что в указанном контексте используется непредвиденное значение. Обычно это предупреждение возникает, когда значения передаются в виде аргументов функции, которая их не ожидает.

Пример

В следующем фрагменте кода C++ возникает такое предупреждение, поскольку функция DoSomething ожидает значение null, но ей может быть передано значение, отличное от null:

#include <string.h>
#include <malloc.h>
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;

void DoSomething( [Pre( Null=Yes )] void* pReserved );
 
void f()
{
    void* p = malloc( 10 );
    DoSomething( p );  // C6388
    // code...
    free(p);
}

Чтобы исправить это предупреждение, используйте следующий код:

#include <string.h>
#include <malloc.h>
#include <codeanalysis\sourceannotations.h>
using namespace vc_attributes;

void DoSomething( [Pre( Null=Yes )] void* pReserved );

void f()
{
  void* p = malloc( 10 );
  if (!p)
  {
    DoSomething( p );  
  }
  else
  {
    // code...
    free(p);
  }
} 

См. также

Основные понятия

Общие сведения о заметках