﻿# V549\. The 'first' argument of 'Foo' function is equal to the 'second' argument\.

Анализатор обнаружил потенциальную ошибку в программе, связанную с тем, что совпадают два фактических аргумента функции\. Передача одного и того же значения в качестве двух аргументов для многих функций является нормальной ситуацией\. Но если речь идет о таких функциях как memmove, memcpy, strstr, strncmp, то это очень подозрительная ситуация\.

Пример из реального приложения:

```cpp
#define str_cmp(s1, s2)  wcscmp(s1, s2)
...
v = abs(str_cmp(a->tdata, a->tdata));
```

Из\-за опечатки функция wcscmp сравнивает строку саму с собой\. Корректным вариантом кода должно было быть:

```cpp
v = abs(str_cmp(a->tdata, b->tdata));
```

Анализатор выдаст предупреждение в случае работы с функциями: memcpy, memmove, memcmp, \_memicmp, strstr, strspn, strtok, strcmp, strncmp, wcscmp, \_stricmp, wcsncmp и так далее\. Если вы обнаружили подобную ошибку, которая не диагностируется анализатором, то просим сообщить нам имя функции, которая также не должна принимать в качестве первого и второго аргумента одинаковые значения\.