gpt4 book ai didi

c - 将struct的成员声明为c中的指针并使用它

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:00 26 4
gpt4 key购买 nike

  • 我有一个 uint8_t *C = malloc(24*sizeof(uint8_t));

  • 我需要将一些整数和这个 *C 发送到另一个节点(在 ad hoc 网络中)。所以我要使用一个结构

    struct fulMsg {
    int msgType;
    int msgCount;
    //uint8_t *CC;
    } fulMsg_t;

    typedef struct fulMsg fulMsg_tt;`
  • 在我的 api(contiki) 中有一个名为 packetbuf_copyfrom(X, sizeof(X)); 的方法。如果我像这样创建结构 struct fulMsg *fmsg = &fulMsg_t; 我可以像这样使用上面的方法 packetbuf_copyfrom(fmsg, 8); 从另一端我可以很容易地获取这两个值。

  • 所以我的问题是,当我要对那个指针应用相同的东西时,它不起作用,我正在使用的网络模拟器突然崩溃(我认为存在段错误)。我无法在结构号中初始化 *C 的大小。如何正确地做到这一点 fmsg->CC = C;

  • 在另一端,我是这样接收这个结构的:struct fulMsg *r_fmsg = &fulMsg_t;rfmsg = (fulMsg_tt *)(packetbuf_dataptr());。所以我可以很容易地从另一端获得值(value)。 (不需要做ntoh和hton,但是如果真的需要那个也没关系)

  • 简单来说,我想做的就是将 *C contain 的值和一些其他整数发送到另一个节点。我怎样才能正确地做到这一点。

最佳答案

我对 contiki 不熟悉,而且似乎没有太多方便的文档,但从我的发现来看,该函数看起来不够智能,无法知道结构的哪些部分是指针,所以我猜它不是为此而设计的。我认为您必须制作一个直接包含完整数组的结构,例如,

struct fulMsg {
int msgType;
int msgCount;
uint8_t CC[24];
} fulMsg_t;

typedef struct fulMsg fulMsg_tt;
fulMsg_tt msg;
uint8_t *C = malloc(24*sizeof(uint8_t));
// Do whatever with this array, then
msg.msgCount = 24; // or whatever
memcpy(&msg.CC, C, 24*sizeof(uint8_t));


packetbuf_copyfrom(&msg, sizeof(fulMsg_tt));

关于c - 将struct的成员声明为c中的指针并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com