Ham*_*jan 3 c++ null pointers coding-style
选项A:
if (NULL == pSomethingColumn) // Yes, we use Yoda conditions
if (NULL != pSomethingColumn)
Run Code Online (Sandbox Code Playgroud)
要么
if (pSomethingColumn)
if (!pSomethingColumn)
Run Code Online (Sandbox Code Playgroud)
我正在寻找解释推理的参考资料.
我听说有人说从技术上讲NULL不一定要定义为0,而是来吧!如果是这种情况,那么吸盘(我们的应用程序)会以-2147483648不同的方式崩溃.
那么,如果NULL != 0,那么我们将遇到大问题.
请帮我解决一个毫无意义的语法辩论.我对这两种方式都不是特别关注; 只是寻找官方的方式.谢谢.
PS我们正在使用Visual Studio C++编译器.
Mar*_*som 11
我认为这是历史事故,零对应于假,非零对应于真; 我只想为布尔表达式保留这些表单.但是,我在其他人的代码中看到该表单时没有问题.
我的投票:
if (pSomethingColumn == NULL)
Run Code Online (Sandbox Code Playgroud)
不,我从来没有因忘记其中一个等号而被咬伤.只是幸运,或者可能非常小心.
两者都没有明显好于另一个.从技术角度来看,它们是等价的.指针上下文中的数字0并不表示所有位为零; 它被定义为等效于用于表示空指针的任何位模式.NULL可以定义为0或(void *) 0.这两个定义都是语法定义,并且没有说明基础位表示.
因此,if (!p)相同if (p == NULL)的是一样的if (p == 0),只要技术正确性去.
问题是风格问题.像所有风格问题一样,您的第一个倾向应该是匹配现行的编码标准.与代码库的其余部分做同样的事情.如果没有现行标准,则归结为个人偏好,我们鼓励您与同行制定编码标准.
(我个人喜欢使用显式比较并为布尔值保留较短的语法,但我很乐意使用if (!p)其他人正在做的事情.)