#define MAX 7
#define BUFFER 16
#define MODULO 8
typedef struct {
int x;
} BLAH;
如果我有:
checkWindow(BLAH *b) {
int mod;
mod = b.MODULO;
}
具体来说,我可以从BLAH结构中访问MODULO吗?
答案 0 :(得分:2)
我认为你误解了预处理器定义的含义。 #define
- d项只看起来像变量,但它们不是经典意义上的变量:它们是文本替换。在编译器查看程序文本之前,它们由preprocessor解释。到预处理器完成时,程序的文本没有引用MAX
,BUFFER
或MODULO
:它们的出现被7
,{{1 }和16
。这就是您无法访问8
- d变量的原因:没有可访问的变量。
答案 1 :(得分:0)
在编译之前,所有#defines都将以纯文本替换它们定义的“值”。它们不是变量,只是简单的语法使编写程序变得容易。你的#def东西都没有实际到达编译器,它在预处理器中得到了解决。
现在,如果您只是将示例中的MODULO替换为8,那么生成的代码对您有意义吗? 如果确实有意义,请参加计算机编程101课程。