结构体的声明和赋值问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

结构体的声明和赋值问题

--------------------------------第一个结构体定义----------------------------------------------------------
/*

  • 消息处理回调函数数据结构
    */

typedef struct MessageData
{

MQTTMessage* message;   //mqtt消息结构体
MQTTString* topicName;  //订阅的主题topic

}MessageData;
--------------------------------第二个结构体定义----------------------------------------------------------
/*

  • 订阅主题对应的消息处理结构
    */

typedef struct MessageHandlers
{

const char* topicFilter;      //pub消息对应的主题
void (*fp) (MessageData*);    //pub消息处理函数

}MessageHandlers;
--------------------------------在函数内定义使用时----------------------------------------------------------
MessageHandlers handler = {topicFilter,NULL};
此时编译是错误的,用的是MDK5.
有没有别的写法可以完美的定义并且赋值。
错误提示为附件图片。F_U_1KG9KNBRZ4B_PVXX_1D

展开
收起
企鹅与西瓜 2017-05-03 16:54:49 2912 0
1 条回答
写回答
取消 提交回答
  • 被纵养的懒猫

    C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如: struct st { int x,y; char str[10]; }; struct st array ; int n; printf("input n: "); scanf("%d", &n); array=(struct st)malloc(n*sizeof(struct st)); //动态分配n个结构体空间,接下来array的操作,与数组操作是相同的,如:array[0].x=1 ; C99以后,C语言标准开始支持动态定义数组,但动态数组,在其确定个数之后,在其生命期中,就不可变了。如: struct st { int x,y; char str[10]; }; int n; printf("input n: "); scanf("%d", &n); struct st array[n] ; //定义动态数组 array[0].x=1 ;

    2019-10-15 16:39:28
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载