我面前有一段代码,它遍历了一长串url,当这些url包含某种类型的文档时,出现了一些问题。我不想看到每个迭代,所以我设置了一个条件断点。
问题是我不是一个C++程序员,所以我有点想方设法去做我想做的事情,我可能做了一些明显的错误。
我现在的情况是:
(strstr( url, "xlsx") == 0x00000000)
这意味着每当url(它是一个UNICODE字符*)不包含文本“xlsx”strstr时,就会返回一个空指针,该指针应该与条件相匹配,正如我所理解的那样。从长远来看,我确实希望它是相反的,但由于只有几个“xlsx”网址,我想检查它是否工作,我现在有这种方式。
嗯,我的条件没有得到满足,或者至少断点没有被触发。
假设我做错了什么,我复制了与watch表达式相同的值,并在前面的行上设置了一个无条件断点。当我跨过传统断点时,结果如下:
Name | Value
================================================
(strstr( url, "xlsx") == 0x00000000) | true
很显然,就监视窗口而言,我的条件可以为true,但不能触发条件断点。
为了做进一步的实验,我试着把情况翻过来
(strstr( url, "xlsx") != 0x00000000)
就条件断点而言,这也是错误的,这看起来有点滑稽,因为这意味着它既不等于也不等于空指针值。
这是C++中NULL值的一些不寻常的特性吗?是不是真的有什么明显的东西让我错过了,或者是语言上的一些怪癖让我完全错过了这次的航行?