我遇到了以下声明;这个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;
答案 0 :(得分:3)
宏定义仍然适用于整个编译过程,并且宏不是作用域的。
答案 1 :(得分:0)
宏没有“范围”,一旦定义它们,它们就会存在,直到编译单元结束。 (或直到#undef
)。
括号括起来的块的范围由编译器定义,而宏在编译之前被替换。
答案 2 :(得分:0)
宏是预处理器指令,它们没有范围。