2015-02-07 87 views
1

我試圖從一個結構從結構分配一個字符串轉換爲字符值

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; 

其中value 「嗒嗒」

這給我一個警告:返回時將整數指針,未作鑄現在

的整數它的工作原理:

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

任何幫助將非常感激!

+3

如果param_val的類型是char *,那麼應該是你的返回類型。 'char'和'char *'是不一樣的。 – 5gon12eder 2015-02-07 00:38:41

回答

0

,如果你想從功能blah_get_param_char返回字符串的第一個字符,然後使用*(((blah_param_int_t*)param_p)->param_val) 代替(((blah_param_char_t*)param_p)->param_val);

或者,如果你想返回整個字符串,然後返回爲指針(char*)字符串。