在结构中定义的MACRO的范围是什么?

时间:2012-05-14 11:45:24

标签: c

我遇到了以下声明;这个MACRO的范围是什么?

typedef struct Hdr_s {
#define MACRO1   1
#define MACRO2       2
#define MACRO3   3
unsigned char  Flag;          
unsigned char  Offset; 
unsigned short cpy_len_offset;
unsigned char  cpy_offset;
}Hdr_t;

3 个答案:

答案 0 :(得分:3)

宏定义仍然适用于整个编译过程,并且宏不是作用域的。

答案 1 :(得分:0)

宏没有“范围”,一旦定义它们,它们就会存在,直到编译单元结束。 (或直到#undef)。

括号括起来的块的范围由编译器定义,而宏在编译之前被替换。

答案 2 :(得分:0)

宏是预处理器指令,它们没有范围。