0

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

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;
4

3 回答 3

3

宏定义保留用于编译的整个其余部分,并且宏没有作用域。

于 2012-05-14T11:47:08.780 回答
0

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

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

于 2012-05-14T11:47:57.150 回答
0

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

于 2012-05-14T11:49:44.390 回答