c中类型转换问题
typedef enum conf_type {
CONF_ITEM_PAIR,
CONF_ITEM_SECTION
} CONF_ITEM_TYPE;
struct conf_item {
struct conf_item *next;
struct conf_part *parent;
int lineno;
CONF_ITEM_TYPE type;
};
struct conf_pair {
CONF_ITEM item;
char *attr;
char *value;
LRAD_TOKEN operator;
};
struct conf_part {
CONF_ITEM item;
char *name1;
char *name2;
struct conf_item *children;
};
有这几个结构,他们之间进行类型转换,请问是怎么执行的?直接转换不会产生不安全或
错误么?
CONF_PAIR *cf_itemtopair(CONF_ITEM *ci)
{
if (ci == NULL)
return NULL;
rad_assert(ci->type == CONF_ITEM_PAIR);
return (CONF_PAIR *)ci;
}
CONF_SECTION *cf_itemtosection(CONF_ITEM *ci)
{
if (ci == NULL)
return NULL;
rad_assert(ci->type == CONF_ITEM_SECTION);
return (CONF_SECTION *)ci;
}
CONF_ITEM *cf_pairtoitem(CONF_PAIR *cp)
{
if (cp == NULL)
return NULL;
return (CONF_ITEM *)cp;
}
CONF_ITEM *cf_sectiontoitem(CONF_SECTION *cs)
{
if (cs == NULL)
return NULL;
return (CONF_ITEM *)cs;
}