0
#define MAX 7
#define BUFFER 16
#define MODULO 8

typedef struct {
int x;
} BLAH;

如果我有:

  checkWindow(BLAH *b) {  
  int mod;   
  mod = b.MODULO; 
  }

具体来说,我可以从 BLAH 结构访问 MODULO 吗?

4

2 回答 2

2

我认为您误解了预处理器定义的含义。#define-d 项目只是看起来像变量,但它们不是经典意义上的变量:它们是文本替换。在编译器查看程序文本之前,它们由预处理器解释。到预处理器完成时,程序的文本没有对 、 或 的引用MAXBUFFER它们MODULO的出现被替换为7168。这就是您无法访问#define-d 变量的原因:没有可访问的变量。

于 2013-02-04T20:04:14.563 回答
0

在编译之前,所有#defines 都将被它们定义的“值”替换为纯文本。它们不是变量,只是便于编写程序的简写语法。你的#def 东西实际上都没有到达编译器,它在预处理器中解析。

现在,如果您只是将示例中的 MODULO 替换为 8,那么生成的代码对您有意义吗?如果它确实有意义,请参加计算机编程 101 课程。

于 2013-02-04T20:23:55.227 回答