VSCode调试控制台中如何比较指针变量是否为NULL?
问题原因及解决办法
为什么p == NULL会报错?
VSCode调试依赖的GDB后端,在处理调试控制台的表达式时,无法直接识别C语言里的NULL宏——NULL本质是预编译阶段展开的宏(通常是((void*)0)或0),调试器运行时没有预编译的上下文,会把NULL当成一个需要查找的变量名,但程序里并没有定义名为NULL的变量,所以会抛出-var-create: unable to create variable object错误。
而1 == 2这类纯整数比较能正常执行,是因为1、2是直接的数值常量,调试器可以直接解析计算,不需要查找变量。
解决方法
直接用NULL的实际等价写法代替即可:
- 输入
p == 0:C语言中指针与0比较等价于与NULL比较 - 或者输入
p == (void*)0:完全对应NULL的标准宏定义写法
这样就能正常得到指针是否为空的判断结果了。
内容的提问来源于stack exchange,提问作者user97662
相关产品推荐
相关产品推荐

