2019-07-20 22:11发布
shihantu 发表于 2016-5-16 20:16 16 行写成一个 void print(const arm_test* pData) , 17 和 19 行就可以调用了 . 20 行要再封装一个函数 ...
最多设置5个标签!
编制两个程序文件main.c和type.c,main.c演示了如何定义结构体和一个结构体长度数组
type.c定义了结构体内容,如果需要增加和修改结构体内容,只要修改type.c就行,抛砖引玉
mian.c
[mw_shl_code=c,true]
#include "stdio.h"
#define DATA(a,b,c) a b;
typedef struct
{
#include "type.c"
}arm_test;
#define DATA(a,b,c) sizeof(a),
const char arm_test_size[]={
#include "type.c"
};
#define DATA(a,b,c) printf(c,*(a *)p);p+=arm_test_size[i++];
void myPrintf(void *p)
{
int n,i;
n=sizeof(arm_test);
i=0;
#include "type.c"
}
void main()
{
arm_test p;
p.a=1;
p.b='d';
p.c=0.9;
myPrintf((void*)&p);
while(1);
}[/mw_shl_code]
type.c
[mw_shl_code=c,true]
DATA(int ,a,"%d ")
DATA(char ,b,"%c ")
DATA(float,c,"%f ")
#undef DATA
[/mw_shl_code]
你要是接收也是可以编程的,
你就把两边的结构体编成一样的,
然后强制转化指针就可以了
(一般都是高端的,不用考虑,碰到不是的算你活该)
是,谢谢您,我现在已经能正常工作了,用一个强制转换就可以
一周热门 更多>