【发布时间】:2010-06-07 15:52:48
【问题描述】:
给定以下结构:
struct nmslist_elem_s {
nmptr data;
struct nmslist_elem_s *next;
};
typedef struct nmslist_elem_s nmslist_elem;
地点:
typedef void* nmptr;
是否可以编写一个从元素中检索数据并将其转换为正确类型的 MACRO:
MACRO(type, element) 扩展为 *((type*)element->data)。
例如对于 int,我需要这样的东西:*((int*)(element->data))。
后期编辑: 是的,它们有效,我正在“吃”一些“(”和“)”。 这有效:
#define NMSLIST_DATA(type,elem) (*((type*)((elem)->data)))
#define NMSLIST_DATA_REF(type,elem) ((type*)((elem)->data))
【问题讨论】:
-
#define GET_DATA(type, element) *((type*)element->data)有什么问题?我错过了什么吗? -
@sbi 括号围绕
element? -
@Pete:啊,是的。 (我是 C++ 程序员...)
标签: c pointers macros c-preprocessor