﻿# V775\. It is suspicious that the BSTR data type is compared using a relational operator\.

Анализатор обнаружил подозрительное сравнение элемента BSTR\-типа, при помощи операторов отношения: \>, <, \>\=, <\=\.

BSTR \(basic string или binary string\) \- это строковый тип данных, который используется в COM, Automation и Interop функциях\. Этот тип данных включает в себя префикс длины, строку данных и [терминальный ноль](https://pvs-studio.ru/ru/blog/terms/0088/)\. 

Тип BSTR является указателем, который всегда указывает на первый символ строки данных, а не на префикс длины\. По этой причине, каждый BSTR объект является уникальным и один BSTR не может быть частью другого, как это возможно с обычными строками\.

![V775_ru/image1.png](https://import.viva64.com/docx/blog/V775_ru/image1.png)

Однако, обычная строка может являться частью BSTR \(но не наоборот\), поэтому сравнения вида "wchar\_t\* \> BSTR" допустимы\.

![V775_ru/image2.png](https://import.viva64.com/docx/blog/V775_ru/image2.png)

Рассмотрим пример:

```cpp
void func(BSTR a, BSTR b)
{
  if (a > b)
  {
   ....
  }
}
```

Данный код является ошибочным, так как сравнение указателей 'a' и 'b' не имеет смысла\.

Подробнее про BSTR можно прочитать [на MSDN](https://msdn.microsoft.com/en-us/library/windows/desktop/ms221069%28v=vs.85%29.aspx)\.