我面前有一段代码遍历一长串 url,当这些 url 包含某种类型的文档时出现问题。我不想看到每次迭代,所以我设置了一个条件断点。
问题是我不是 C++ 程序员,所以我不得不四处寻找如何做我想做的事,而且我可能会做一些明显错误的事情。
因此,我目前的情况是:
(strstr( url, "xlsx") == 0x00000000)
这应该意味着每次 url (这是一个 UNICODE_char* )不包含文字“xlsx” strstr 将返回一个应该匹配条件的空指针,据我所知。从长远来看,我实际上希望它反过来,但由于只有几个“xlsx”网址,我想检查它是否有效,我现在就采用这种方式。
好吧,我的条件没有得到满足,或者至少断点没有被触发。
假设我做错了什么,我复制了与监视表达式相同的值,并在之前的行上设置了一个无条件断点。当我越过我的随机断点时,结果如下所示:
Name | Value
================================================
(strstr( url, "xlsx") == 0x00000000) | true
因此,就监视窗口而言,显然我的条件可以为真,但不会触发条件断点。
为了进一步实验,我尝试翻转条件,所以它是
(strstr( url, "xlsx") != 0x00000000)
就条件断点而言,这也是错误的,这似乎有点有趣,因为这意味着它既不等于也不等于空指针值。
这是 C++ 中空值的一些不寻常的属性吗?是否有一些非常明显的东西我错过了,或者语言的一些怪癖导致我完全错过了这艘船?