大佬教程收集整理的这篇文章主要介绍了在NULL表示为0的平台上,编译器曾为NULL <= p生成了意外的代码,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
另一方面,当应用于不指向同一对象内的指针时,> =和其他比较未定义.这包括测试q> = NULL其中q是有效指针.这个测试是我的问题的主题.
我在静态分析器上处理低级嵌入式代码.这种代码在标准允许的范围之外执行是正常的.作为示例,在这种代码中,指针数组可以用memset(…,…)初始化,尽管标准没有指定NULL和0必须具有相同的表示.为了有用,分析仪必须接受这种事情并按照程序员的期望来解释它们.警告程序员会被视为误报.
所以分析器已经假设NULL和0具有相同的表示(你应该检查你的编译器对分析器,以确保他们同意这种假设).我注意到一些程序将有效指针与NULL进行比较> =(this library是一个例子).只要NULL表示为0并且指针比较被编译为无符号整数比较,这就可以正常工作.
我只希望分析仪警告这一点,如果可能是因为一些激进的优化,它可能被编译成与程序员在传统平台上的含义不同的东西.因此我的问题是:在没有将q> = NULL评估为1的程序的任何示例,在NULL表示为0的平台上?
注意:这个问题不是关于在指针上下文中使用0来获取空指针.关于NULL表示的假设是一个真实的假设,因为memset()示例中没有转换.
以上是大佬教程为你收集整理的在NULL表示为0的平台上,编译器曾为NULL <= p生成了意外的代码全部内容,希望文章能够帮你解决在NULL表示为0的平台上,编译器曾为NULL <= p生成了意外的代码所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。