O_APPEND的十六进制值是多少?

时间:2017-10-14 00:04:21

标签: c linux

fcntl-linux.h显示

#ifndef O_APPEND
# define O_APPEND     02000
#endif

//示例C代码

int APPEND_MASK  = O_APPEND;

GDB snippit

(gdb) print /x APPEND_MASK 
$11 = 0x400

我确定头文件是通过手动转换以八进制存储位标志但是我怎么知道呢?例如,在头文件中,它表示八进制是数字系统..?

1 个答案:

答案 0 :(得分:2)

头文件只定义了一个宏,这是一个简单的字符串替换。所以宏的结果是

int APPEND_MASK = O_APPEND;

替换为

int APPEND_MASK = 02000;

在C中,当整数常量以0开头时,它被解释为八进制(正如0x前缀意味着将其解释为十六进制)。这个常量是直接写在C代码中还是来自头文件中的宏没有区别。