如何从C文件中的一个结构访问#define变量?

时间:2013-02-04 20:01:11

标签: c structure c-preprocessor

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

typedef struct {
int x;
} BLAH;

如果我有:

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

在编译之前,所有#defines都将以纯文本替换它们定义的“值”。它们不是变量,只是简单的语法使编写程序变得容易。你的#def东西都没有实际到达编译器,它在预处理器中得到了解决。

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