初始化使指针从整数开始而无需强制转换

考拉

我正在尝试使用特定参数定义结构,但我想知道是否有更好的方法可以在不使用内存分配的情况下初始化该结构

结构定义:

#define MAXLINE 1024
#define MAXNAME 256
#define MAXPATH 1024

typedef enum {
  BL_MESG         = 10

} mesg_kind_t;

// mesg_t: struct for messages between server/client
typedef struct {
  mesg_kind_t kind;               // kind of message
  char name[MAXNAME];             // name of sending client or subject of event
  char body[MAXLINE];             // body text, possibly empty depending on kind
} mesg_t;

typedef struct {
  char name[MAXPATH];
} client_t;

我如何创建msg_t

mesg_t create_mesg(client_t *client, char *text){
  char * cl_name = client->name;
  mesg_t msg = {BL_MESG, "", ""};
  strcpy(msg.name, cl_name);
  strcpy(msg.body, text);
  return msg;
}

有没有办法在不使用strcpy的情况下对其进行初始化?有什么明显的我完全想念的地方吗?

P__J支持波兰的妇女

你不能这样子。您需要使用通过值传递和复制的内容。在C中可以是structunion

#define MAXLINE 1024
#define MAXNAME 256
#define MAXPATH 1024

typedef enum {
  BL_MESG         = 10
} mesg_kind_t;

struct names
{
    char name[MAXNAME];
};

struct bodys
{
    char body[MAXNAME];
};

typedef struct {
  char name[MAXPATH];
} client_t;



// mesg_t: struct for messages between server/client
typedef struct {
  mesg_kind_t kind;               // kind of message
  client_t name;             // name of sending client or subject of event
  struct bodys body;             // body text, possibly empty depending on kind
} mesg_t;

#define MAKENAME(str) (struct bodys){str}
#define MAKEBODY(str) (client_t){str}


mesg_t create_mesg(client_t *client, struct bodys text){

  mesg_t msg = {BL_MESG, *client, text};
  return msg;
}


void foo()
{
    create_mesg(&MAKEBODY("This is client"), MAKENAME("this is body"));
}

https://godbolt.org/z/d83USr

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EEPROM初始化和初始化使指针从整数开始而无需强制转换

来自分类Dev

初始化使指针从整数开始而无需强制转换-C

来自分类Dev

传递的参数使指针从整数开始而无需强制转换

来自分类Dev

警告:初始化会使指针从整数开始而没有强制转换(整数指针)

来自分类Dev

警告:初始化会使指针从整数开始而没有强制转换(整数指针)

来自分类Dev

错误:初始化使指针从整数开始而没有强制转换

来自分类Dev

C指针和数组:[警告]分配使指针从整数开始而无需强制转换

来自分类Dev

警告:初始化会从指针进行整数转换而无需强制转换

来自分类Dev

警告:传递'strcpy'的参数1会使指针从整数开始而无需强制转换

来自分类Dev

传递puts的arg 1使指针从整数开始而无需强制转换

来自分类Dev

传递sprintf的参数2会使指针从整数开始而无需强制转换。C警告

来自分类Dev

传递'new_student'的参数1使指针从整数开始而无需强制转换

来自分类Dev

传递参数'的'1使指针从整数开始而无需强制转换

来自分类Dev

警告:传递'fopen'的参数2会使指针从整数开始而无需强制转换

来自分类Dev

警告:传递'uart1_sendchar'的参数1会使指针从整数开始而无需强制转换[默认启用]

来自分类Dev

初始化使指针无需强制转换

来自分类Dev

赋值使指针从整数开始而没有强制转换警告

来自分类Dev

赋值使指针从整数开始而没有强制转换(c)

来自分类Dev

从整数(pointer)生成指针(整数)而无需强制转换

来自分类Dev

指针算术:警告:赋值使指针从整数开始而没有强制转换[默认启用]

来自分类Dev

赋值使整数生成指针而无需强制转换结构

来自分类Dev

数组初始化中的“初始化使指针不进行强制转换而使整数成为整数”

来自分类Dev

C-警告:赋值使指针从整数开始而没有强制转换

来自分类Dev

警告:赋值使指针从整数开始而没有强制转换yylval = atoi(yytext);

来自分类Dev

队列:警告:赋值使指针从整数开始而没有强制转换

来自分类Dev

使用 strcmp,初始化使指针从整数而不进行强制转换

来自分类Dev

指针算术运算符:警告:赋值使指针从整数开始而没有强制转换[默认启用]

来自分类Dev

警告:赋值使指针从整数开始而没有在malloc进行强制转换(默认情况下启用)

来自分类Dev

传递'functions'的参数1可以从整数进行指针转换而无需强制转换

Related 相关文章

  1. 1

    EEPROM初始化和初始化使指针从整数开始而无需强制转换

  2. 2

    初始化使指针从整数开始而无需强制转换-C

  3. 3

    传递的参数使指针从整数开始而无需强制转换

  4. 4

    警告:初始化会使指针从整数开始而没有强制转换(整数指针)

  5. 5

    警告:初始化会使指针从整数开始而没有强制转换(整数指针)

  6. 6

    错误:初始化使指针从整数开始而没有强制转换

  7. 7

    C指针和数组:[警告]分配使指针从整数开始而无需强制转换

  8. 8

    警告:初始化会从指针进行整数转换而无需强制转换

  9. 9

    警告:传递'strcpy'的参数1会使指针从整数开始而无需强制转换

  10. 10

    传递puts的arg 1使指针从整数开始而无需强制转换

  11. 11

    传递sprintf的参数2会使指针从整数开始而无需强制转换。C警告

  12. 12

    传递'new_student'的参数1使指针从整数开始而无需强制转换

  13. 13

    传递参数'的'1使指针从整数开始而无需强制转换

  14. 14

    警告:传递'fopen'的参数2会使指针从整数开始而无需强制转换

  15. 15

    警告:传递'uart1_sendchar'的参数1会使指针从整数开始而无需强制转换[默认启用]

  16. 16

    初始化使指针无需强制转换

  17. 17

    赋值使指针从整数开始而没有强制转换警告

  18. 18

    赋值使指针从整数开始而没有强制转换(c)

  19. 19

    从整数(pointer)生成指针(整数)而无需强制转换

  20. 20

    指针算术:警告:赋值使指针从整数开始而没有强制转换[默认启用]

  21. 21

    赋值使整数生成指针而无需强制转换结构

  22. 22

    数组初始化中的“初始化使指针不进行强制转换而使整数成为整数”

  23. 23

    C-警告:赋值使指针从整数开始而没有强制转换

  24. 24

    警告:赋值使指针从整数开始而没有强制转换yylval = atoi(yytext);

  25. 25

    队列:警告:赋值使指针从整数开始而没有强制转换

  26. 26

    使用 strcmp,初始化使指针从整数而不进行强制转换

  27. 27

    指针算术运算符:警告:赋值使指针从整数开始而没有强制转换[默认启用]

  28. 28

    警告:赋值使指针从整数开始而没有在malloc进行强制转换(默认情况下启用)

  29. 29

    传递'functions'的参数1可以从整数进行指针转换而无需强制转换

热门标签

归档