--------------------------------第一个结构体定义----------------------------------------------------------
/*
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.
有没有别的写法可以完美的定义并且赋值。
错误提示为附件图片。
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 ;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。