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