最近的程序开发当中,遇到了一个蛮有意思的问题。我现在有一个外设,我写了个初始化函数,bit periphal_ini(),如果初始化成功就返回1,初始化失败就返回0.以前我都是这样写,periphal_ini();
if( periphal_ini() )
{
}
那么请看我的图片,如果我图片上结论正确的话。
那我只要写
if( periphal_ini() )
{
}
就是我认为,在判断peiphal_ini()的时候,这个函数体被完整的执行了。
假设我的结论正确的话,按照我以前那样写,peiphal_ini()这个函数体就被执行了两次,如果里面有全局变量,那程序不就有BUG了吗??
望各位不吝赐教。
if( periphal_ini() ) 当然会完整的执行periphal_ini() 这是没有疑问的。
如果你不希望periphal_ini()执行两次,你可以这样写:
int f = periphal_ini();
if (f)
{
……
}这样你可以反复使用periphal_ini()的返回值。
如果你只需要使用一次periphal_ini()的返回值,那么你后面一种写法是合适的。
本帖最后由 cdzx@163.com 于 2017-3-23 00:05 编辑
图片中的程序 没看出毛病
天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
是的,你这种使用位变量的做法很不错,学到了。我那个程序的一个bug就是periphal_ini()里面就是我放了个全部变量,导致被窝两次使用了。多谢赐教。
确实是这样的。那么我以后就不会写出periphal_ini();if( periphal_ini() ) {.....}