Sizeof的问题

evelan 2000-11-23 05:46:00
顺便生成一个新项目,然后加一行代码
Length := Sizeof(Integer);
就是不执行,请问哪位知道,为什么?
我怀疑是编译器的问题,可是下一行FillChar(@p,sizeof(XXX),0),中的sizeof(xxx)
调式器可以看到结果(XXX是一个Record)。
我看Delphi 中Demo中的sizeof都可以执行~!~
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
eagleyin 2000-11-23
  • 打赏
  • 举报
回复
用sizeof函数时需要使用以下编译开关:{$A-}
否则编译器会自动进行优化,把结构中的字段自动按照一定的边界对齐,这个时候sizeof函数返回的值会比真正的值大一点
myxxyy 2000-11-23
  • 打赏
  • 举报
回复
确实奇怪,我刚才在机器上试的是对的结果:4。
本来还以为有可能是Length与函数Length() 有重名的嫌疑,可是我用的变量就是Length。
但以前我用Sizeof()确实也出过毛病:我用Sizeof()去读一个结构的长度尺寸,死活读不对,最后没办法只好一个一个变量的去计算。也许是盗版的一点Bug吧。
把这个语句换在别的地方试试吧。
guanxuegong 2000-11-23
  • 打赏
  • 举报
回复
在project菜单下选options...在对话框中选择compiler页中的debuging中的选项。同时选中左下角的default.OK?
whoo 2000-11-23
  • 打赏
  • 举报
回复
不执行是什么意思?Length 没有结果么.

以下猜测仅供参考:
Length有正确值,但是断点执行不到这一句.
sizeof(Integer)有可能被编译器优化,等价于Length :=4;所以看不到执行效果.
cwhelucky 2000-11-23
  • 打赏
  • 举报
回复
源码,或者检查程序是否用到该语句,delphi编译器,对于没有用到的语句或者函数是不会编译的,更不可能执行

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧