ACC_MODE详解

ACC_MODE详解

分析内核源码时碰到了ACC_MODE宏定义,查看定义如下
···
#define O_ACCMODE 0003
#define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE])
···

  • 其中\0表示转移字符
  • ACC_MODE 定义了一个字符串数组内容为[0,4,2,6]
  • &0003 表示与上八进制的3,取了参数x的最低两位,范围为0-3

写代码验证

代码内容如下

#define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE])
#define O_ACCMODE	   0003
#include <stdio.h>
  int main ()
  {
	int i=0;
	for(i=00; i<4;i++)
    {
        printf("acc_mode[%d]=%d \n",i,ACC_MODE(i));
    }

    for(i=0;i<4;i++)
    {
       printf("%c \n","abcd"[i]);
    }
	return 0;
  }
	
  • 运行结果如下
cc_mode[0]=0 
acc_mode[1]=4 
acc_mode[2]=2 
acc_mode[3]=6 
a 
b 
c 
d 
posted @ 2022-08-28 20:43  lxblog  阅读(200)  评论(0编辑  收藏  举报