大括号

[复制链接]
350|9
手机看帖
扫描二维码
随时随地手机跟帖
zhuww|  楼主 | 2018-10-10 19:28 | 显示全部楼层 |阅读模式
os, TE, nex, FOR

if ,endif 是配套使用的哈
     void  OSSched(void)

{
    uint8 temp;

    OS_ENTER_CRITICAL();
#if EN_OS_INT_ENTER > 0
    if (OSIntNesting == 0)            
    {
#endif                         // 就是这里了。为什么在上面那个if条件判断语句中,有了个endif。 下面可是还要执行的啊。 if和endif之间怎么会有一个条件判断语句?

#if OS_MAX_TASKS < 9
                        temp = OSTaskRuning;
        for (OSNextTaskID = 0; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
        {
            if ((temp & 0x01) != 0)
            {
                break;
            }
            temp = temp >> 1;
        }
        OS_TASK_SW();                  
#else
                      temp = OSTaskRuning % 256;
        for (OSNextTaskID = 0; OSNextTaskID < 8; OSNextTaskID++)
        {
            if ((temp & 0x01) != 0)
            {
                goto TaskSw;
            }
            temp = temp >> 1;
        }

        temp = OSTaskRuning / 256 ;
        for (; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
        {
            if ((temp & 0x01) != 0)
            {
                break;
            }
            temp = temp >> 1;
        }
TaskSw:
        OS_TASK_SW();                   /* 进行任务调度 */
#endif

#if EN_OS_INT_ENTER > 0
    }
#endif
    OS_EXIT_CRITICAL();
}
wangpe| | 2018-10-10 19:32 | 显示全部楼层
#if EN_OS_INT_ENTER > 0
    }
#endif
这儿也有一个,和上边对应的。

使用特权

评论回复
wangzsa| | 2018-10-10 19:38 | 显示全部楼层
基本功而已

使用特权

评论回复
zhuww|  楼主 | 2018-10-10 19:42 | 显示全部楼层

条件编译,定义了(EN_OS_INT_ENTER > 0)则只在 OSIntNesting == 0 的条件下才执行下面的代码,否则无条件执行

使用特权

评论回复
langgq| | 2018-10-10 19:46 | 显示全部楼层
只要#if,#endif 成对出现即可。

使用特权

评论回复
zhanglli| | 2018-10-10 19:50 | 显示全部楼层

(1)条件编译,即如果EN_OS_INT_ENTER > 0成立,则OSIntNesting == 0 会被编译器编译,否则不被编译(记住不是执行代码),此时等价于你直接删除如下几行代码。
#if EN_OS_INT_ENTER > 0
    if (OSIntNesting == 0)            
    {
#endif

使用特权

评论回复
lium| | 2018-10-10 19:59 | 显示全部楼层
(2)后面的大括弧“}”也必须同步的用如上的条件编译,否则孤零零的多处个大括弧,编译报错。

使用特权

评论回复
zhuww|  楼主 | 2018-10-10 20:03 | 显示全部楼层
搞定了,呵呵,犯了低级错误……结贴啦,多谢各位

使用特权

评论回复
甲虫666| | 2018-10-10 20:22 | 显示全部楼层
条件编译,定义了(EN_OS_INT_ENTER > 0)则只在 OSIntNesting == 0 的条件下才执行下面的代码,否则无条件执行

使用特权

评论回复
xiaoqi000| | 2018-10-10 21:22 | 显示全部楼层
好吧,解帖了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

893

主题

8252

帖子

1

粉丝