【问题标题】:Assigning a string to a char value from a struct将字符串分配给结构中的 char 值
【发布时间】:2015-04-07 06:20:43
【问题描述】:

我正在尝试将字符串分配给结构中的 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);
}

任何帮助将不胜感激!

【问题讨论】:

  • 如果param_valchar * 类型,那么你的返回类型应该是。 charchar * 不一样。

标签: c pointers struct char uint32-t


【解决方案1】:

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

或者,如果您想返回整个字符串,则作为指向该字符串的指针 (char*) 返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2011-09-23
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多