社区
C++ Builder
帖子详情
Tc编译模式问题 有经验的请出手!
gall
2000-12-01 04:49:00
我在TC3.0,DOS下编程时遇到两个问题:
1.所有书上都说单个的源文件,目标文件都不能超过64K,但我的程序源文件,目标文件和可
执行文件都远远超过了这个限制,不过运行正常为什么?
2.为了符合64K这个限制,我把文件拆成几个模块后,只有在huge模式下编译后才能运行,为
什么?(虽然我用了huge指针,但并没有听说过必须用huge模式编译才行呀).
...全文
389
13
打赏
收藏
Tc编译模式问题 有经验的请出手!
我在TC3.0,DOS下编程时遇到两个问题: 1.所有书上都说单个的源文件,目标文件都不能超过64K,但我的程序源文件,目标文件和可 执行文件都远远超过了这个限制,不过运行正常为什么? 2.为了符合64K这个限制,我把文件拆成几个模块后,只有在huge模式下编译后才能运行,为 什么?(虽然我用了huge指针,但并没有听说过必须用huge模式编译才行呀).
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
skt642
2001-05-31
打赏
举报
回复
24456关注!
wxz
2000-12-25
打赏
举报
回复
兄弟,王士元的那个破烂扔垃圾桶算了。
DOS下,C有6种编译模式,第一种Tiny模式用于编译成com文件,第2种small模式用于编译code和data都小于64k即都在单一段的情况,.....
总之,采用compact模式吧。如果老兄确实是做大大项目,那么用huge吧.
storyxlx
2000-12-24
打赏
举报
回复
1。文件不能超过64k,是TC2.0的限制,TC3.0用DPMI,它在保护模式下运行,没有这个限制(win31也用DPMI,参见《windows奥秘》和《windows抛析》)。
2。因为你的程序没有使用DPMI,当然还要受16位的64k壁垒之苦,Borland huge模式使用了宏代换(参见Borland自己的库函数源码),用时间换取空间,所以你的程序运行无误。
BCB
2000-12-04
打赏
举报
回复
与模式有关系:
dos每一个段只能<64k,程序有三类型的段:数据段,代码段,堆栈段;
你可能是小模式态,代码<64k,数据<64k,两者之和<128k;
若是极小模式,只有一个段,两者之和只能<64k,可转换成.com;
huge模式要分开编译,每一部分是一个代码段64k,多个代码段
合在一起就可大于64k了;
BCB
2000-12-04
打赏
举报
回复
TC 好象是远古时代的文物吧,
还有DOS什么的,请考古学家
出山
项目花园范德彪
2000-12-04
打赏
举报
回复
BC3.1倒是有,那我的一个哥们说, 网上也可以DOWN的,不知在哪,用Small才是你说的
单个的源程序其编译生成的代码和数据量均不能超过64K,但也只是在80286以下的机子上,
现在的地址是怎么 回事,就不得而知了,
另个,com确实比EXE的文件小,还快
项目花园范德彪
2000-12-04
打赏
举报
回复
没有人用,就别回答呀,我怎么越看越不懂了,
问问题的兄弟是不是要做一个 .com的文件,这要用Tiny模式,在64K以内,才能用EXEtoCom转
gall
2000-12-02
打赏
举报
回复
人在项目中,身不由己,1M的内存,8M的DOC(相当于硬盘)386的PC104,硬件平台决定了用DOS,不过BC3.1 倒确实不错,我以前也用过,可是早就没有了,哪位仁兄那有,肯惠赐否?
关于64K的限制我是在王士元编的C高级实用程序设计91页看的,原话是:无论采用那种编译模式,单个的源程序其编译生成的代码和数据量均不能超过64K,对于超过的源程序可以...
拆分...另外一本书上也说:任何一个单个的原语言模块不能超过64K,必须把超过的分成若干模块
再把它们的.OBJ连接起来建立.EXE文件
看来只能认为他们说错了.
Winsky
2000-12-01
打赏
举报
回复
另外对于第二个问题我建议你使用Borland C++ 2.0 或者 3.1 编译连接,因为 Turbo C++ 1.0 ~ 3.0 在内存管理方面都存在一些bug。
Winsky
2000-12-01
打赏
举报
回复
1.所有书上都说单个的源文件,目标文件都不能超过64K,但我的程序源文件,目标文件和可
执行文件都远远超过了这个限制,不过运行正常为什么?
答:源文件和目标文件没有这个限制。如果你生成的exe文件中用的指针和指向的数据凑巧被编译连接到同一个64k段中,运行也会很正常,不过数据太大时就会出问题,你的程序就是这个情况,可能只是因为你的数据较小,没有出问题而已。
2.为了符合64K这个限制,我把文件拆成几个模块后,只有在huge模式下编译后才能运行,为
什么?(虽然我用了huge指针,但并没有听说过必须用huge模式编译才行呀).
答:使用large指针虽然可以访问其它数据段的内容,但访问时指针增量不能超过64k段,使用large模式编译时huge指针的物理地址转换方法和huge方式时的huge指针的物理地址转换方法不同,huge模式下的huge指针才是真正的huge指针。
mywater
2000-12-01
打赏
举报
回复
你做工控吗?
就是,也不用非得在Dos下面编程,并且使用TC30!
我的建议:
Dos:
WC
BC
Windows:
VC
CB
cwhelucky
2000-12-01
打赏
举报
回复
对于你的拆分来讲,其编译时将其同样写入一个文件的,等于没有拆分,执行文件没有大小限制,因为其为exe格式,还有单个文件正常,因为你用的编译器,支持huge模式。
Searph
2000-12-01
打赏
举报
回复
这些东西都快忘光光了,建议你不要再和dos纠缠不清了,呵呵~~
原文件不大于64K没什么道理,这和dos16位指针有什么关系?
目标文件不大于64K好像只有.com文件有这个限制,exe是允许跨段的,无论是code还是data段,只是根据是否跨段使用不同的编译模式,如果code和data都跨段了就使用huge模式。
也不知道记得的这些还对不对,有没有dos老鸟讲一下?
musicplay 源代码 手势识别
通过手势识别演奏乐器,源代码可以使用vc或
tc
调试
[转贴]想在计算机方面有所造诣的人必看!!!
如果对自身的发展迷茫,可以看看这篇文章,它比较真实的记录了一些技术人员走过的路。 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。 一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过M
淘宝技术发展--值得学习!
、引言 光棍节的狂欢 “时间到,开抢!”坐在电脑前早已等待多时的小美一看时间已到 2011 年 11 月 11 日零时,便迫不及待地投身于淘宝商城一年一度的大型网购促销活动 —— “淘宝双11购物狂欢节”。小美打开早已收藏好的宝贝 —— 某品牌的雪地靴,飞快的点击购买,付款,一回头发现 3000 双靴子已被抢购一空。 小美跳起来,大叫一声“欧耶!” 小美
6.19科技新闻
沃尔沃的道路无线充电:边开边充 在设备智能化的今天,电力能源是首要选择,但伴随的
问题
是续航会受到影响。手机和电动汽车行业都在绞尽脑汁解决这个
问题
,有创业公司利用手机面板吸收太阳能来增加续航,而对于电动汽车来说,除了在充电站插上充电线外,还有什么选择? 沃尔沃的答案是利用道路进行无线充电。 在瑞典,沃尔沃集团、瑞典电力公司 Alstom、瑞典能源
淘宝架构框架
转自:https://my.oschina.net/yongyi/blog/344030 一、个人网站 2003 年 4 月 7 日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的
C++ Builder
13,870
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章