Передо мной кусок кода, который перебирает длинный список 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 ++? Есть ли что-то действительно очевидное, что я упускаю, или какая-то особенность языка, которая заставляет меня полностью пропустить лодку на этом?