use*_*503 3 c structure token dereference c-preprocessor
我有一个关于'##'的问题,用于使用解除引用运算符进行预处理器粘贴.谁能告诉我为什么下面的代码不能编译?
typedef struct
{
char data;
} MY_STRUCT;
MY_STRUCT My_Instance;
MY_STRUCT* My_PInstance;
#if 1
#define GET_MEMBER(membername) (My_PInstance->##membername)
#else
#define GET_MEMBER(membername) (My_Instance.##membername)
#endif
Run Code Online (Sandbox Code Playgroud)
然后我打电话给:
char value = GET_MEMBER(data); // Where My_PInstance is properly instantiated.
Run Code Online (Sandbox Code Playgroud)
我收到编译错误.
error: pasting "->" and "data" does not give a valid preprocessing token
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1510 次 |
最近记录: |