私は以下の宣言に出くわしました; このマクロの範囲はどうなりますか?
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;
    私は以下の宣言に出くわしました; このマクロの範囲はどうなりますか?
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;
    コンパイルの残りの部分全体でマクロ定義が残り、マクロのスコープは設定されません。
マクロの「スコープ」はありません。マクロが定義されると、コンパイルユニットの最後まで存在します。(またはまで#undef)。
角かっこで囲まれたブロックのスコープはコンパイラーによって定義されますが、マクロはコンパイル前に置き換えられます。
マクロはプリプロセッサディレクティブであり、スコープはありません。