Console 程序与DOS 程序的差别

不少人把DOS 程序和console 程序混为一谈,这是不对的。以下是各方面的比较。

 

编写方式

在Windows 环境下的DOS Box 中,或是在Windows 版本的各种C++ 编译器套件的

整合环境(IDE)中(第4章「Console 程序项目管理」),利用Windows 编译器、联结器做出来的程序,都是所谓Win32 程序。如果程序是以main 为进入点,调用C runtime 函数和「不牵扯GUI」的Win32 API 函数,那么就是一个console 程序,console 窗口将成为其标准输入和输出装置(cin cout)。

过去在DOS 环境下开发的程序,称为DOS 程序,它也是以main 为程序进入点,可以调用C runtime 函数。但,当然,不可能调用Win32 API 函数。

程序功能

过去的DOS 程序仍然可以在Windows 的DOS Box 中跑(Win95 的兼容性极高,

WinNT 的兼容性稍差)。

C onsole 程序当然更没有问题。由于console 程序可以调用部份的Win32 API(尤其是KERNEL32.DLL 模块所提供的那一部份),所以它可以使用Windows 提供的各种高级功能。它可以产生进程(processes),产生执行线程(threads)、取得虚拟内存的信息、刺探操作系统的各种资料。但是它不能够有华丽的外表-- 因为它不能够调用与GUI 有

关的各种API 函数。

DOS 程序和console 程序两者都可以做printf 输出和cout 输出,也都可以做scanf 输入和cin 输入。

可执行文件格式

DOS 程序是所谓的MZ 格式(MZ 是Mark Zbikowski 的缩写,他是DOS 系统的一位

主要构造者)。Console 程序的格式则和所有的Win32 程序一样,是所谓的PE(Portable Executable)格式,意思是它可以被拿到任何Win32 平台上执行。

Visual C++ 附有一个DUMPBIN 工具软件,可以观察PE 文件格式。拿它来观察本节的JBACKUP 程序和MFCCON 程序(以及第3章的所有程序),得到这样的结果:

H:\u004\prog\jbackup.01>dumpbin /summary jbackup.exe

Microsoft (R) COFF Binary File Dumper Version 5.00.7022

Copyright (C) Microsoft Corp 1992-1997. All rights reserved.

Dump of file jbackup.exe

File Type: EXECUTABLE IMAGE

Summary

         5000 .data

         1000 .idata

         1000 .rdata

          5000 .text

拿它来观察DOS 程序,则得到这样的结果:

C:\UTILITY>dumpbin /summary dsize.exe

Microsoft (R) COFF Binary File Dumper Version 5.00.7022

Copyright (C) Microsoft Corp 1992-1997. All rights reserved.

 

Dump of file dsize.exe

DUMPBIN : warning LNK4094: "dsize.exe" is an MS-DOS executable;

 use EXEHDR to dump it

 

Summary

 

摘选自《深入浅出MFC-第二版》 侯俊杰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿尔兹

如果觉得有用就推荐给你的朋友吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值