﻿# V2002\. Consider using the 'Ptr' version of the 'foo' function here\.

Данное диагностическое правило добавлено по просьбе пользователей\.

Анализатор позволяет обнаружить вызов функций, у которых существует 'Ptr' аналог\. Имеются в виду функции, имеющие в составе своего названия суффикс 'Ptr', такие как: 'SetClassLongPtr', 'DSA\_GetItemPtr'\.

Рассмотрим исходный код: 

```cpp
void foo(int a);
void fooPtr(int a, bool b);
....
void test()
{
  foo(1); // V2002
}
```

В месте вызова функции 'foo', будет выдано предупреждение V2002, так как имеется функция с тем же именем, но оканчивающаяся на 'Ptr'\. Функция 'foo2' не имеет альтернативного варианта, и предупреждение выдаваться не будет\.

Сообщение V2002 будет также выдано для случая:

```cpp
void fooA(char *p);
void fooPtrA(char *p, int x);
....
void test()
{
  fooA(str); // V2002
}
```

Предупреждение не выдается в случае, когда вызов одноименной функции происходит из её расширенной версии:

```cpp
class A
{
  ....
  void foo() { .... };
  void fooPtr()
  {
    foo();  // ok
  }
  ....
};
```

Родственным диагностическим сообщением является [V2001](https://pvs-studio.ru/ru/docs/warnings/v2001/)\.