免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ ec问题
最近访问板块 发新帖
查看: 1494 | 回复: 3
打印 上一主题 下一主题

ec问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-28 16:12 |只看该作者 |倒序浏览
我写了个ec程序,ec里的结构体在内存里为什么会多了几个字节呢
EXEC SQL BEGIN DECLARE SECTION;
typedef struct cmmcode_s
{
   char   codtp[3];
   int   codsq;
   char   valtp[2];
}cmmcode_t;
char  pDbs[20+1];
cmmcode_t  cmmcode;
EXEC SQL END DECLARE SECTION;
int main()
{
   char  *p=NULL;
   int   i;
   printf("sizeof[%d]\n",sizeof(cmmcode_t)); //在c程序里这里的长度是9,但ec为什么是12??????
   memcpy(cmmcode.codtp,"123",3);
   cmmcode.codsq=0x12345678;
   memcpy(cmmcode.valtp,"12",2);
   p=(char *)&cmmcode;
   for(i=0;i<sizeof(cmmcode_t);i++)
      printf("%2x ",*(p+i));
   printf("\n");
   return 0;
}
打印出来的结果是31 32 33  0 12 34 56 78 31 32  0  0
把这个改成c程序编译运行结果是 31 32 33  12 34 56 78 31 32
正常应该是后者才对啊

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-06-28 17:26 |只看该作者
结构体字节对齐的问题。

论坛徽章:
0
3 [报告]
发表于 2008-06-28 17:29 |只看该作者
结构体字节对齐的问题??
是什么的
怎么解决
因为我的程序里有c程序也有ec程序
ec需要调用c程序生成的.o文件,所以有错

论坛徽章:
0
4 [报告]
发表于 2008-06-28 17:46 |只看该作者
问题解决了
谢谢你了
我的makefile文件的
.c.o和.ec.o的编译配置不同
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP