对于union成员,编译错误“没有成员命名”

时间:2014-04-28 05:33:16

标签: c gcc unions

我看到这个编译错误"没有名为&#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;
:
:
}

任何有关可能问题的指示都将受到高度赞赏。 谢谢,

1 个答案:

答案 0 :(得分:0)

该问题与Makefile中提到的头文件的重复过时路径有关。它指的是错误的路径,所以显然我的变化没有受到影响。

相关问题