看了一份代码,几乎所有地方能用if else就用if else,于是我突然想到了三个问题:
在一个有实际意义的应用需求驱动之下(而不是像C混沌大赛那种装逼场景下)
1. 一行什么样的代码,当能完全读懂以后......就可以对一般水平的C码农证明"C语言不是这么简单"
2. 一行什么样的代码,当能自己一次写出来以后没bug运行........就可以对一般水平的C码农证明"C语言其实可以相当巧妙"
3. 一行什么样的代码,当能自己通过某些方法改进后以最优方式实现的时候.....就可以对一般水平的C码农证明"C的博大精深”
好像有点强迫症,但个人感觉,同样的东西,要写出更好的代码还是不能马马虎虎,if else死扛到底
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
自我感觉不错,大佬勿喷
- typedef void (*gsmAtFunctionHandler)(unsigned char * par,unsigned short len);
- typedef struct
- {
- ATType gsmAtFunctionCode;
- gsmAtFunctionHandler AtHandler;
- unsigned char *str;
- } AtFunctionHandler;
- static AtFunctionHandler AtHandlers[MaxAtCount] = {
- {AT_ATE, At_FunctionAte, (unsigned char *)"ATE0
"},
- {AT_CPIN, At_FunctionCpin, (unsigned char *)"AT+CPIN?
"}
- .
- .
- .
- };
- void At_FunctionCpin(unsigned char *par, unsigned short len)
- {
- if (At_CheckResult(par, len) == At_OK)
- {
- AtStatusChange(AT_CREG, 1000);
- }
- else if (At_CheckResult(atStatus.AtRevBuffer, atStatus.AtRevBufferLength) == At_ERR)
- {
- atStatus.AtCmd = AtWiteSend;
- }
- }
- .
- .
- .
- void UartRecvData()
- {
- for (i = 0; i < MaxAtCount; i++)
- {
- if (AtHandlers[i].gsmAtFunctionCode == atStatus.AtNow && atStatus.AtCmd == AtWiteRev)
- {
- AtHandlers[i].AtHandler(BufferStartAddr, packlenght);
- break;
- }
- }
- }
复制代码一周热门 更多>