当前位置: 技术问答>linux和unix
谁能解释下这个符号的含义?和对应的语句
来源: 互联网 发布时间:2015-10-26
本文导语: 在看和chmod()有关的函数 想自己弄个设定文件开启时间的函数,但下面的不明白,有谁能解释下? ~符号是什么意思? #define ALL_MODES 0006777 /* all bits for user, group and others */ /* The following names are synony...
在看和chmod()有关的函数 想自己弄个设定文件开启时间的函数,但下面的不明白,有谁能解释下?
~符号是什么意思?
#define ALL_MODES 0006777 /* all bits for user, group and others */
/* The following names are synonyms for the variables in the input message. */
。。。。。
#define mode m.m3_i2
这里的m.m3_i2 是如何定义的?它应该是定义文件是700 还是777什么的
发现定义
#define m3_i2 m_u.m_m3.m3i2
for e.g
#define ALL_MODES 0006777 /* all bits for user, group and others */
/* The following names are synonyms for the variables in the input message. */
。。。。。
#define mode m.m3_i2 //found
#define m3_i2 m_u.m_m3.m3i2 //try to understand this defind
found:
typedef struct {
int m_source; /* who sent the message */ 03137 int m_type; /* what kind of message is it */ 03138 union {
mess_1 m_m1;
mess_2 m_m2;
mess_3 m_m3;
mess_4 m_m4;
mess_5 m_m5;
} m_u;
} message;
found:
typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
typedef struct {long m4l1, m4l2, m4l3, m4l4, m4l5;} mess_4;
typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;}mess_5;
typedef struct {int m6i1, m6i2, m6i3; long m6l1; sighandler_t m6f1;} mess_6;
但我不知道m.m3_i2 到底 怎么组成的,我只知道它是INT但为什么是m_u.m_m3.m3i2 而不是 m_u.m_m3.m3i1 同样是INT?而且m_m1 and m_m2 ..m_m6之间什么关系?
下面一句什么意思,特别是rip->i_mode & ~ALL_MODES 部分,什么是~ALL_MODES?
rip->i_mode = (rip->i_mode & ~ALL_MODES) | (mode & ALL_MODES);
~符号是什么意思?
#define ALL_MODES 0006777 /* all bits for user, group and others */
/* The following names are synonyms for the variables in the input message. */
。。。。。
#define mode m.m3_i2
这里的m.m3_i2 是如何定义的?它应该是定义文件是700 还是777什么的
发现定义
#define m3_i2 m_u.m_m3.m3i2
for e.g
#define ALL_MODES 0006777 /* all bits for user, group and others */
/* The following names are synonyms for the variables in the input message. */
。。。。。
#define mode m.m3_i2 //found
#define m3_i2 m_u.m_m3.m3i2 //try to understand this defind
found:
typedef struct {
int m_source; /* who sent the message */ 03137 int m_type; /* what kind of message is it */ 03138 union {
mess_1 m_m1;
mess_2 m_m2;
mess_3 m_m3;
mess_4 m_m4;
mess_5 m_m5;
} m_u;
} message;
found:
typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1;
typedef struct {int m2i1, m2i2, m2i3; long m2l1, m2l2; char *m2p1;} mess_2;
typedef struct {int m3i1, m3i2; char *m3p1; char m3ca1[M3_STRING];} mess_3;
typedef struct {long m4l1, m4l2, m4l3, m4l4, m4l5;} mess_4;
typedef struct {char m5c1, m5c2; int m5i1, m5i2; long m5l1, m5l2, m5l3;}mess_5;
typedef struct {int m6i1, m6i2, m6i3; long m6l1; sighandler_t m6f1;} mess_6;
但我不知道m.m3_i2 到底 怎么组成的,我只知道它是INT但为什么是m_u.m_m3.m3i2 而不是 m_u.m_m3.m3i1 同样是INT?而且m_m1 and m_m2 ..m_m6之间什么关系?
下面一句什么意思,特别是rip->i_mode & ~ALL_MODES 部分,什么是~ALL_MODES?
rip->i_mode = (rip->i_mode & ~ALL_MODES) | (mode & ALL_MODES);
|
#define其实就是进行字符替换,如果看不清楚,你把所有define的东西都用实际的内容替换也许就比较容易看懂意思了。
struct里边即使同一种类型(比如int)的参数,定义者想让他们传递的意义一般也是不同的(比如:一个int传序号,一个int传重复次数等)。
各个message之间的关系要看具体的应用,光这点代码恐怕很难解释,除非有谁已经看过完整的代码。
~就是取反的意思。~ALL_MODES也就是将0006777按位取反。
struct里边即使同一种类型(比如int)的参数,定义者想让他们传递的意义一般也是不同的(比如:一个int传序号,一个int传重复次数等)。
各个message之间的关系要看具体的应用,光这点代码恐怕很难解释,除非有谁已经看过完整的代码。
~就是取反的意思。~ALL_MODES也就是将0006777按位取反。