将字符串分配给struct的char值

时间:2015-02-07 00:32:26

标签: c pointers struct char uint32-t

我正在尝试将字符串分配给struct

中的char值
typedef struct blah_param_s {
    struct blah_param_s*  param_next;
    blah_param_type_t     param_type;
} blah_param_t;

typedef struct blah_param_char_s {
    blah_param_t    param_hdr;
    char*           param_val;
} blah_param_char_t;

我的职责是:

static inline char blah_get_param_char (blah_param_t* param_p)
{
    return (((blah_param_char_t*)param_p)->param_val);
}

将这一切全部消除的违规代码是:

((blah_param_char_t*)new_param_p)->param_val = value;

其中值为“blah”

这给了我一个警告:return从没有强制转换的指针生成整数

现在整数有效:

typedef struct blah_param_int_s {
    blah_param_t    param_hdr;
    uint32_t        param_val;
} blah_param_int_t;

static inline uint32_t blah_get_param_int (blah_param_t* param_p)
{
    return (((blah_param_int_t*)param_p)->param_val);
}

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

如果要从函数blah_get_param_char返回字符串的第一个字符,请使用*(((blah_param_int_t*)param_p)->param_val) 而不是(((blah_param_char_t*)param_p)->param_val);

或者,如果要返回整个字符串,则返回指针(char*)到字符串。