这里只针对单核CPU,linux内核和其他一些开源的代码中,经常会遇到这样的代码:
1do{
2 ...
3}while(0)
1#define DOSOMETHING()\
2 foo1();\
3 foo2();
1if(a > 0)
2 DOSOMETHING();
1if(a > 0)
2 foo1();
3foo2();
1if(a > 0)
2{
3 foo1();
4 foo2();
5};
1#define DOSOMETHING() \
2 do{ \
3 foo1();\
4 foo2();\
5 }while(0)\
6
7...
8
9if(a > 0)
10 DOSOMETHING();
11
12...
1#define DOSOMETHING() ({\
2 foo1(); \
3 foo2(); \
4})
1int foo()
2{
3 somestruct* ptr = malloc(...);
4
5 dosomething...;
6 if(error)
7 {
8 goto END;
9 }
10
11 dosomething...;
12 if(error)
13 {
14 goto END;
15 }
16 dosomething...;
17
18END:
19 free(ptr);
20 return 0;
21
22}
1int foo()
2{
3
4 somestruct* ptr = malloc(...);
5
6 do{
7 dosomething...;
8 if(error)
9 {
10 break;
11 }
12
13 dosomething...;
14 if(error)
15 {
16 break;
17 }
18 dosomething...;
19 }while(0);
20
21 free(ptr);
22 return 0;
23
24}
1#define EMPTYMICRO do{}while(0U)
1.25万研究所和40万996大厂去哪个?
2.单片机串口最底层的本质!
3.在MCU开发中如何充分利用各种类型的断点?(上)
4.在MCU开发中如何充分利用各种类型的断点?(下)
5.MCU在线调试功能正常而离线工作异常原因探究~
6.到底什么是“无源物联网”?
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容