c语言 - 工会成员的编译错误"has no member named"



我看到一些并集元素的编译错误"没有命名的成员"。

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数据类型都在一个头文件中定义,并包含在引用联合成员的my.c文件中。代码片段粘贴在下面。

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;
:
:
}

如能就可能出现的问题提出任何建议,我们将不胜感激。谢谢,

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

相关内容

最新更新