我看到这个编译错误"没有名为&#34的成员;对于一些联合元素。
snmp_xmas.c:129: error: 'xmas_datatype_value_t' has no member named 'int8'
snmp_xmas.c:132: error: 'xmas_datatype_value_t' has no member named 'int16'
我没有看到成员定义有任何问题。工会定义如下。
typedef union {
/**
* Value for XMAS_ITEM_DATATYPE_BITS
*/
xmas_datatype_bits_t bits;
/**
* Value for XMAS_ITEM_DATATYPE_BOOL
*/
xmas_datatype_bool_t boolean;
/**
* Value for XMAS_ITEM_DATATYPE_CERRNO
*/
xmas_datatype_cerrno_t cerrno;
/**
* Value for XMAS_ITEM_DATATYPE_DATETIME
*/
xmas_datatype_datetime_t datetime;
/**
* Value for XMAS_ITEM_DATATYPE_EMPTY
*/
xmas_datatype_empty_t empty;
/**
* Value for XMAS_ITEM_DATATYPE_ENUM
*/
xmas_datatype_enum_t enumeration;
/**
* Value for XMAS_ITEM_DATATYPE_IDENTITYREF
*/
xmas_datatype_identityref_t identityref;
/**
* Value for XMAS_ITEM_DATATYPE_INT16
*/
xmas_datatype_int16_t int16;
/**
* Value for XMAS_ITEM_DATATYPE_INT32
*/
xmas_datatype_int32_t int32;
/**
* Value for XMAS_ITEM_DATATYPE_INT64
*/
xmas_datatype_int64_t int64;
/**
* Value for XMAS_ITEM_DATATYPE_INT8
*/
xmas_datatype_int8_t int8;
/**
* Value for XMAS_ITEM_DATATYPE_INTF
*/
xmas_datatype_intf_t *intf;
/**
* Value for XMAS_ITEM_DATATYPE_IPV4_ADDR
*/
xmas_datatype_ipv4_addr_t ipv4_addr;
/**
* Value for XMAS_ITEM_DATATYPE_IPV6_ADDR
*/
xmas_datatype_ipv6_addr_t *ipv6_addr;
/**
* Value for XMAS_ITEM_DATATYPE_IP_ADDR
*/
xmas_datatype_ip_addr_t *ip_addr;
/**
} xmas_datatype_value_t;
所有的xmas数据类型都在一个头文件中定义,并包含在我的.c文件中,该文件引用了union成员。代码段粘贴在下面。
cerrno
xmibd_convert_xmas_to_XXX(xmas_item_datatype_t *xmas_datatype,
xmas_datatype_value_t *xmas_value,
struct sa_do_value **ret_value)
{
:
:
:
switch (*xmas_datatype) {
case XMAS_ITEM_DATATYPE_BITS:
out_value = sa_do_value_new_unsigned_long(xmas_value->bits);
break;
case XMAS_ITEM_DATATYPE_BOOL:
out_value = sa_do_value_new_boolean(xmas_value->boolean);
break;
case XMAS_ITEM_DATATYPE_CERRNO:
out_value = sa_do_value_new_unsigned_int(xmas_value->cerrno);
break;
case XMAS_ITEM_DATATYPE_EMPTY:
out_value = sa_do_value_new_boolean(xmas_value->empty);
break;
case XMAS_ITEM_DATATYPE_DATETIME:
out_value = sa_do_value_new_datetime(xmas_value->datetime);
break;
case XMAS_ITEM_DATATYPE_INT8:
out_value = sa_do_value_new_byte(xmas_value->int8);
break;
case XMAS_ITEM_DATATYPE_INT16:
out_value = sa_do_value_new_short(xmas_value->int16);
break;
:
:
}
任何有关可能问题的指示都将受到高度赞赏。 谢谢,
答案 0 :(得分:0)
该问题与Makefile中提到的头文件的重复过时路径有关。它指的是错误的路径,所以显然我的变化没有受到影响。