同步操作将从 一辉从天/linux-0.12-1 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
volatile
关键字
例如,在include/linux/kernel.h
中有这样一行代码:
volatile void do_exit(long error_code);
这里其实是帮助编译器进行优化,对于do_exit()
而言,它是永远都不会返回的。如果还将调用它的函数的返回地址保存在堆栈上的话,是没有任何意义的。但是加了volatile
过后,就意味着这个函数不会返回,就相当于告诉编译器,我调用后是不用保存调用我的函数的返回地址的。这样就达到了优化的作用。这种优化来源于gcc,在gcc2.5版本以后,使用noreturn
属性来做优化,原代码等同于void do_exit(int error_code) __attribute__((noreturn));
,但是在gcc2.5的版本以前,没有noreturn
属性。
字符串用法
例如,在fs/namei.c
中有这么一行代码:
#define ACC_MODE(x) ("\004\002\006\377"[(x) & O_ACCMODE])
上面宏中右侧表达式是访问数组的一种特殊使用方法。它基于这样的一个事实,即用数组名和数组下标所表示的数组项(例如a[b])的值等同于使用数组首指针(地址)加上该项偏移地址的形式的值*(a+b),同时可知项a[b]也可以表示成b[a]形式。因此对于字符数组项形式为"LoveYou"2就等同于*("LoveYou" + 2)。另外,字符串"LoveYou"在内存中被存储的位置就是其地址,因此数组项"LoveYou"[2]的值就是该字符串索引值为2的字符"v"。
例 "LoveYou"[2] = 2["LoveYou"] = *("LoveYou"+2)= 'v'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。