结构体强制转换问题!!求教
struct sockaddr tmp111;
struct sockaddr_in *sin111;
char *buf = (char *)malloc(10000);
memset(buf, 0, sizeof(buf));
tmp111 = ipList[asd].fromaddr;
sin111 = (struct sockaddr_in*)&tmp111;
memcpy(buff, sin111->sin_addr, 4);为什么最后一句copy会报类型不完整?gcc编译报错,vs不报错。
改成下面这样就可以了?
memcpy(buff, (struct in_addr*)&sin111->sin_addr, 4);相关推荐
关于结构体指针类型的强制转换
在学习stm32嵌入式开发过程中,关于对GPIOA等地址的强制性结构体指针类型转换的参考依据!
关于结构体类型数据的强制类型转换
有如下结构体定义: typedef struct cemsg { uchar dl; uchar mg; uchar data[10]; }CEMSG; typedef struct msg{ uchar id; uchar cmd; uchar byte[4]; }MSG; typedef struct msg_p{ uchar id; uchar cmd; uchar far * ptr; }MSG_P; void ap_getmsg(MSG *d_OsMsgPtr,CEMSG *d_Ce
浅谈Java中强制类型转换的问题
下面小编就为大家带来一篇浅谈Java中强制类型转换的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
常量强制转化为一个结构体指针,并以此常量为该结构体的起始地址。
#include typedef struct DD STU; struct DD{ int a; int b; char t; }; void main(void) { STU c,b; b.t=4; printf(%p\n,&(((STU*) 0x40)->b));//输出(STU*) 0x40)->b的地址为00000044 printf(%d\n,b.t); } 如果宏定义括号不可以去掉: 1、#define WE ((STU*) 0x40) // 正确 2、#define WE (STU*) 0x40 //错误 注意:第二种定义在实际展开时会因为运算
C编程小技巧??结构体强制类型转换
前些天看一款数据库语法解析器的代码,其中的词法分析语法解析阶段,利用一个结构体存储所解析的SQL语句的类型,然后根据这个类型将改结构体强制转换为对应的另一结构体并赋值给他,以便做进一步的执行工作。 举个简单的例子: 存储语法解析后数据的结构体(注意,其只有一个元素)为: struct analyse { int type; }; 我们约定的不同的type代表不同的SQL操作,假如type=1时表示alter table操作,type=2时表示select操作,type等于3时表示create table操作等等。那么我们对不同的操作有不同的结构体来存储信息,例


