[英]Macro expansion and stringification: How to get the macro name (not its value) stringified using another macro?
[英]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.