宏的高级应用——X

编程入门 行业动态 更新时间:2024-10-24 12:26:23

宏的<a href=https://www.elefans.com/category/jswz/34/1770104.html style=高级应用——X"/>

宏的高级应用——X

使用switch-case/if-else

对于条件/分支处理的程序设计,我们惯性地会选择switch-case或者if-else,这也是C语言老师当初教的。以下,我们用一个播放器的例子来说明,要实现的功能如下:

  1. 收到用户操作播放器命令请求,如“播放”、“暂停”等,程序要对命令作区分;
  2. 针对不同的命令请求,作相应的处理;
  3. 输出必要的辅助信息。

首先,将命令定义成enum类型:

enum 
{CMD_PLAY, CMD_PAUSE,CMD_STOP,CMD_PLAY_NEXT,CMD_PLAY_PREV,
};

然后,用switch-case的分支处理:

switch(cmd)
{case CMD_PLAY:// handle play commandbreak;case CMD_PAUSE:// handle pause commandbreak;case CMD_STOP:// handle stop commandbreak;case CMD_PLAY_NEXT:// handle play next commandbreak;case CMD_PLAY_PREV:// handle play previous commandbreak;default:break;
}

实际上,这也没什么毛病。但是,时间长了,需求不断变更,程序不断迭代,这个switch-case会变得非常冗长而很难维护。你不相信?我曾经见到过>1000行的类似这样的代码。如果让你接手维护这样的代码,你内心会不会狂奔着万千草泥马?

但是,我不敢更改这个祖传的switch-case啊,那么小心翼翼地将这些命令处理封装成函数。像这样:

#define FUNC_IN()   printf("enter %s \r\n", __FUNCTION__)void func_cmd_play(void* p)
{FUNC_IN();
}void func_cmd_pause(void* p)
{FUNC_IN();
}void func_cmd_stop(void* p)

更多推荐

宏的高级应用——X

本文发布于:2024-02-12 17:32:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1688735.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:高级

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!