tc编译的dos程序和vc编译的win32控制台程序的异同

它们有着本质的区别:1:一个是16的DOS程序,一个是标准的32的Windows应用程序.前者依然受着64KB内存分段约束,后者无忧无虑地使用着4GB内存地址空间.它们本来就是运行在不同的操作系统上的.别把他们混淆.DOS程序可以运行在windows上是因为有NTVDM.而你把VC生成的控制台程序放到DOS下只会得到!?This program cannot be run in DOS mode.2:如果你是用标准库编写的话,代码应该没多大差异的.但执行时调用库方式却差天共地.前者通过API模拟出一个执行环境,后者是直接调用WIN32 API的.3:TC里面编写程序确实是可以调用中断,可是这个中断不是直接执行的.是NTVDM提供的.在NT的世界里.ring3不太可能直接调用中断的.4:VC6(早期版本就不知道了)不能编写DOS程序,只能编写控制台程序,注意,这只不过是Win32程序只使用控制台这个标准输入输出而已.控制台程序照样可以弹出个窗口,也可以有消息循环,窗口程序照样可以有个控制台.

(0)

相关推荐

  • 在Linux下编译C或C++程序的教程

    从开始学习C/C++我们都在是windows下,那么如何(怎样)在linux中编译C/C++代码?在linux终端下(命令行中)编译译C/C++代码? 在任何linux分支下编译C/C++代码,如 Ubuntu ,Red Hat, Fedora ,Debian 以及其他linux分支上,我们需要安装一下软件包: 1.GNU C and C++ compiler collection 2.Development tools 3.Development libraries 4.IDE or text

  • 终于明白了tc编译的dos程序和vc编译的win32控制台程序的区别

    它们有着本质的区别:1:一个是16的DOS程序,一个是标准的32的Windows应用程序.前者依然受着64KB内存分段约束,后者无忧无虑地使用着4GB内存地址空间.它们本来就是运行在不同的操作系统上的.别把他们混淆.DOS程序可以运行在windows上是因为有NTVDM.而你把VC生成的控制台程序放到DOS下只会得到!?This program cannot be run in DOS mode.2:如果你是用标准库编写的话,代码应该没多大差异的.但执行时调用库方式却差天共地.前者通过API模拟

  • Linux下编译C程序的过程

    学习一门语言程序,本人觉得还是得学习它的编译规则,现在,通过小例子小结下自己对C编译的认识. /*test.c 了解C程序的编译*/ #include <stdio.h> int main(void) { printf("Hello World!\n"); return 0; } 对于test.c,我们常用一步编译到位的命令是: gcc -o test test.c 或者 gcc test.c -o test 实际上,上面的这个编译命令包含了四个阶段的处理,即预处理(也称预

  • 如何将C语言代码转换为应用程序(也就是编译)

    C语言是高级语言,它的语法接近于人类的自然语言,但比自然语言严谨.计算机无法直接将C语言的代码运行,他们并不懂得什么是C语言,实际上,计算机只处理他们的机器语言,所以我们必须为自己找一个翻译,这个翻译可分为2种: 1.编译器 编译器是"文章的译者",它在我们完成创作后将其翻译(实际上是编译)成为机器语言. 2.解释器 解释器是"随声翻译",代码运行的同时它们就开始工作,BASIC就是使用解释器,一般认为这种方法效率很低. C语言要请第1种翻译,要想让C语言代码执行,

  • GCC 编译c程序的方法及过程解析

    目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C . C++ 和 Object C 等语言编写的程序. GCC 不仅功能非常强大,结构也异常灵活.最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java . Fortran . Pascal . Modula-3 和 Ada 等.开放.自由和灵活是 Linux 的魅力所在,而这一点在 GCC 上的体现

  • tc编译的dos程序和vc编译的win32控制台程序的异同

    它们有着本质的区别:1:一个是16的DOS程序,一个是标准的32的Windows应用程序.前者依然受着64KB内存分段约束,后者无忧无虑地使用着4GB内存地址空间.它们本来就是运行在不同的操作系统上的.别把他们混淆.DOS程序可以运行在windows上是因为有NTVDM.而你把VC生成的控制台程序放到DOS下只会得到!?This program cannot be run in DOS mode.2:如果你是用标准库编写的话,代码应该没多大差异的.但执行时调用库方式却差天共地.前者通过API模拟

  • 微信小程序 less文件编译成wxss文件实现办法

    less文件编译成微信小程序wxss文件 2016年9月21日,微信小程序正式开启内测.在微信生态下,触手可及.用完即走的微信小程序引起广泛关注,刷爆朋友圈子.在这样的火爆氛围中,作为一个前端开发者的我,也悄悄地去尝鲜. 在做demo小示例的过程中,我发现了一个极为让人为难的事儿:**如何让 less/sass 文件转成小程序的 wxss 文件**.</font> 对于基本不使用原生css,而习惯编写less的我,这个事儿让我的样式编写相当的吃力. 在尝试配置koala (一个可以编译less

  • 在VC中隐藏控制台程序窗口的实现代码

    下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).首先我们来看一下linker的 /subsystem 选项该选项的语法形式如下: /subsystem:{console|efi_application|efi_boot_service_driver|efi_rom|efi_runtime_driver|native|posix|window

  • 详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)

    目录 一.前言 二.编写java文件 三.科补代码理解 四.javap命令 五.执行javap命令 六.下载Jad包 1. 网址下载 2. 解压到指定目录 3. 配置环境变量 4. 常用命令查看 5.实践命令 七.总结 一.前言 我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候:有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的javap命令来进行反编译,反编译出来的如果看不太明白,可以使用Jad工具来配合使用

  • Android Studio中通过CMake使用NDK并编译自定义库和添加预编译库

    Note:这篇文章是基于Android Studio 3.01版本的,NDK是R16. step1:创建一个包含C++的项目 其他默认就可以了. C++ Standard 指定编译库的环境,其中Toolchain Default使用的是默认的CMake环境:C++ 11也就是C++环境.两种环境都可以编库,至于区别,后续会跟进,当前博文使用的是CMake环境. Exceptions Support 如果选中复选框,则表示当前项目支持C++异常处理,如果支持,在项目Module级别的build.g

  • VC++实现文件与应用程序关联的方法(注册表修改)

    本文实例讲述了VC++实现文件与应用程序关联的方法.分享给大家供大家参考,具体如下: 日常工作中,doc文件直接双击后,就能启动word软件,并读取该文档的内容在软件中显示,这都得益于注册表的配置,我们的软件也需要实现这样的功能,该如何写注册表以及写入哪些内容呢?下面的两个函数就能实现这个功能.CheckFileRelation是检查注册表中是否已经将我们期待的文件格式与相应软件关联了:RegisterFileRelation是直接往注册表中写入相关的key和value. /**********

  • VC中控制台程序创建窗口的实例方法

    在VC控制台程序中调用D3DVideoRender时,需要创建新的窗口控件显示图像 #include "windows.h" #include "TCHAR.h" //声明自定义消息处理函数 LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); int _tmain(int argc, _TCHAR* argv[]) { HINSTANCE hInstan

  • vc控制台程序关闭事件时的处理方式及注意点详解

    百度可以找到很多关于这个问题解决的方法 关键控制台API函数:SetConsoleCtrlHandler 在支持C++ 11以上的编译器中,你可以这么做. SetConsoleCtrlHandler([](DWORD fdwctrltype)->BOOL { if (fdwctrltype == CTRL_CLOSE_EVENT) { // 你的善后代码... return TRUE; } return FALSE; }, TRUE); 最初这么做是很舒服的,但之后发现了问题: Windows控

  • visual studio 建立dll类型工程、控制台程序

    1. vs工程类型相关知识 在使用vs创建工程时,如果在"模板"中选的是"Win32",不管是"Win32控制台应用程序".还是"Win32项目",工程创建完成后,在"属性--C/C++--预处理器定义"中都会有宏定义:"WIN32",因此,可以在代码中通过检查是否有宏定义"WIN32"对代码做好windows和linux的控制: 在创建win32的工程时,不论是选择

随机推荐