独闷闷网
标题:
define如何进行多行的宏定义,如何添加大括号"{} "是最佳效果?已解答。
[打印本页]
作者:
jianhong_wu
时间:
2017-4-2 12:00
标题:
define如何进行多行的宏定义,如何添加大括号"{} "是最佳效果?已解答。
本帖最后由 jianhong_wu 于 2017-4-2 12:03 编辑
晓榭-南通:
定义1.png
(2.46 KB, 下载次数: 102)
下载附件
保存到相册
2017-4-2 11:59 上传
define进行多行宏定义是这样吗?
李猛-辽宁:
对,后面有一个反斜杠“\”。
hippo-深圳:
添加大括号的时候,最好加do{xxxx}while(0)的格式。这种写法在linux源码里面遍地都是,这种写法可能是为了代码严谨。
比如:
#define AP_SET_SHORT(ptr, n) do { \
ptr[0] = (n >> 8) & 0xff; \
ptr[1] = (n) & 0xff; \
} while (0)
复制代码
zopherv-深圳:
do { } while (false); 是另一种黑魔法。不仅起到作用域的作用,并且支持在中途 break; 跳出
相当于给了你一个受控、不破坏结构、向后跳转的 goto。不是所有局部代码都必要(值得)提取成一个函数,有些时候我们只是想要一些简单的划分
这时用 do { } while (false); 直接替代内联函数,是个可选的方案。
hippo-深圳:
对,我也利用了do while(0)中途break功能,有些地方不好return,一定要调到末尾,就是利用goto逆向转换到do while(0),解决一些复杂代码。
zopherv-深圳:
从程序的控制流分析来说,一般认为goto以下才是安全的:
(1)后跳,不能前跳
(2)不能从浅的层级,跳入深的层次,例如不能从for的外边跳进去。
hippo-深圳:
goto两种人,初学者或者超级大牛。
欢迎光临 独闷闷网 (http://dumenmen.com/)
Powered by Discuz! X3.2