作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Code::Blocks 和 GNU GCC 编译器。我的问题是:有没有办法将c/c++代码编译为ms-dos 16位(.com)可执行格式?
我尝试设置构建选项并在网上搜索编译器参数,但我找不到任何东西。
最佳答案
您当然可以将 C 和/或 C++(一种古老的方言)编译为 16 位 MS-DOS .com 文件。不过,您使用 Code::Blocks 的编译器/链接器几乎肯定不能做到这一点。
特别是,至少据我所知,gcc 从未尝试过为 16 位分段内存环境生成代码。至少有一个 DOS 扩展器的 gcc 端口( DJGPP ,但它生成 .exe 文件,而不是 .com,并且它使用专有的 DOS 扩展器。这最初使用的是旧版本的 gcc,但后来已更新为更新版本的 gcc。
如果你确实需要生成 .com 文件,有很多选择,但所有编译器都相当老旧,所以特别是对于 C++,它们接受的语言非常有限。
警告:正如已经指出的,所有这些都非常。一般来说,他们接受的 C 语言相当符合 C89,但仅适用于相当小的程序(无论是在代码还是数据大小方面——这是必要的:.com 文件基本上限制为数据和代码的总大小为 64Kbytes)。他们接受的 C++ 与任何接近现代的语言之间的差异要深刻得多(例如,有些根本不支持模板)。这里所有提到的一致性都是相对于当时的其他编译器而言的;按照现代标准,它们的一致性都很糟糕。
当时也有不少,但这些可能占当时市场的 90% 以上。
关于c++ - 如何将c/c++编译为ms-dos .com程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33152287/
我是一名优秀的程序员,十分优秀!