是可以定義一個宏BREF(...):宏分配給函數調用
struct bits
{
int b0:1;
int b1:1;
int b2:1;
int b3:1;
int b4:1;
int b5:1;
int b6:1;
int b7:1;
}
#define BREF(var,bit) ????
#define BAR 4
#define ALIAS BREF(foo,BAR)
unsigned char foo;
,使得這樣的說法:
ALIAS = 1;
擴展到這一點:
((struct bits *)&foo)->b4 = 1;
和這個:
int k = ALIAS;
這樣:
int k = ((struct bits *)&foo)->b4;
到目前爲止,這是我實現BREF(...)的:
#define BREF(var,bit) (((struct bits *) &(var))->b##bit)
但是,如果bit
是文字數字這僅適用。我希望能夠傳遞一個擴展爲數字的宏變量。如何在將C預處理器連接到b
之前將其擴展爲bit
?
謝謝,這個作品完美!我已經完成了兩個級別的擴展,但從來沒有串聯。 – gvl