簡體   English   中英

如何使用字符串化訪問結構成員(在 C 宏中使用 ## 或 #)?

[英]How to access structure member with stringification (using ## or # in C macro)?

typedef enum
{
    ENUM1_A=0,
    ENUM1_B,
}someEnum1_e;

typedef union
{
    someEnum1_e value;
}someEnum1_e_t;


#define GET_ELEMENT(data_name) blah.#data_name    

int main (void)
{
    someEnum1_e_t  blah = {ENUM1_A};

    printf("val = %d ",GET_ELEMENT(value));
}

返回:

main.c: In function ‘main’:
main.c:27:41: error: expected identifier before string constant
     printf("val = %d ",GET_ELEMENT(value));
                                         ^
main.c:21:38: note: in definition of macro ‘GET_ELEMENT’
 #define GET_ELEMENT(data_name) blah.#data_name  

如何在 C 宏中使用 ## 或 # 訪問 blah.value ?

不要使用#

#define GET_ELEMENT(data_name) blah.data_name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM