Почему мое условие точки останова не выполняется, когда мое условие точки останова выполняется в Visual Studio? - PullRequest
1 голос
/ 28 октября 2009

Передо мной кусок кода, который перебирает длинный список URL-адресов, и что-то идет не так, когда эти URL-адреса включают в себя определенный тип документа. Я не хочу видеть каждую итерацию, поэтому я установил условную точку останова.

Беда в том, что я не программист на C ++, поэтому мне немного приходится ловить рыбу, чтобы понять, как делать то, что я хочу, и я могу делать что-то явно неправильное.

Мое текущее состояние таково:

(strstr( url, "xlsx") == 0x00000000)

Это должно означать, что каждый раз, когда url (который является UNICODE_char *) не содержит литерала "xlsx", strstr будет возвращать нулевой указатель, который должен соответствовать условию, насколько я понимаю. Я на самом деле хочу это наоборот в долгосрочной перспективе, но так как есть всего пара «xlsx» URL-адресов, и я хочу проверить, работает ли он, у меня сейчас так.

Что ж, мое условие не выполняется или, по крайней мере, точка останова не срабатывает.

Предполагая, что я что-то делал не так, я скопировал то же значение, что и выражение наблюдения, и установил безусловную точку останова на предыдущей строке. Результат выглядит следующим образом, когда я перешагиваю через свою контрольную точку останова:

Name                                 | Value
================================================
(strstr( url, "xlsx") == 0x00000000) | true

Так что, по-видимому, мое состояние может быть верным в отношении окна наблюдения, но не может вызвать условную точку останова.

Чтобы продолжить эксперимент, я попытался перевернуть условие, чтобы оно было

(strstr( url, "xlsx") != 0x00000000)

Что касается условной точки останова, то это также ложно, что кажется немного забавным, поскольку это означало бы, что оно не равно и не равно значению нулевого указателя.

Это какое-то необычное свойство нулевых значений в C ++? Есть ли что-то действительно очевидное, что я упускаю, или какая-то особенность языка, которая заставляет меня полностью пропустить лодку на этом?

1 Ответ

1 голос
/ 28 октября 2009

Если ваш URL-адрес является строкой Unicode, вы пытались использовать wcsstr?

...