使DEV ++与Turbo C ++的代码/头兼容

时间:2015-09-07 06:37:25

标签: c++ c dos turbo-c++

我在80%的设备使用MS-DOS界面的工厂工作。我们的工程师都没有c / c ++编程经验,并且要求我们在机器界面添加一些功能。我们的自动化组已经放弃了MS-DOS平台,转而支持Allen-Bradley控件。我感到雄心勃勃并决定接受这个项目,即使我没有c / c ++的经验。

关于问题:

所有编程都是用Turbo C ++编写和编译的。我更喜欢使用DEV ++,原因有多种(易用性,附加标题,更开发的C ++平台等)。问题是现有的编程很大程度上依赖于TC ++的非标准头文件。源代码中DEV ++中有10个左右的头文件,并且使用更现代的构造重写代码不是一个选项;我们会失去我们对AG,时间等的一点点支持。

有没有办法可以将TC ++中的所有标题添加到DEV ++中?例如,将graphics.h添加到DEV ++并使其完全正常运行?我已经尝试将它添加到include文件夹,用#include“graphics.h”调用它,如果DEV ++设法识别它,它会抛出大量的编译错误,因为它无法识别graphics.h中的内部命令文件。

不幸的是,由于不公开和复制写入政策,我不能包含此项目的任何示例代码。

我的编程经验: RSLogigx500,5000中的 DABBLE ; Arduino IDE(不判断);派克6K; PanelView; 〜40小时的自学c和c ++。

非常感谢任何帮助。

更新 非常有用的信息。考虑到硬件已经过时以及我对这个项目的限制,似乎这是不可能的,但是谢谢大家的意见。

2 个答案:

答案 0 :(得分:4)

在某种程度上,来自旧Turbo C的大多数标头实际上只是MSDOS API。因此,尝试在任何其他环境中使用这些标头并没有任何意义,并且您无法将它们移植到Windows编译器。类似地,graphics.h用于Borland特定的DOS图形库,称为BGI,不适用于任何其他编译器。

应该注意的是,旧的Turbo C ++(我假设3.1版本?)并没有太多遵循C或C ++标准。它使用的C ++版本完全是古董。

另请注意,Dev C ++ IDE已过时,不再更新GCC编译器。 CodeBlocks IDE是一个更好的选择。

答案 1 :(得分:3)

这更像是一个“长篇评论”,而不是直接回答你的问题,试图引导你更好地理解你的项目中可能遇到的挑战。

我个人会选择更“专业”的开发工具。 Eclipse(积极的是,这是可移植的,无论您使用的是Windows还是Linux,外观/感觉都一样),XCode(仅适用于Mac)或Visual Studio(仅适用于Windows)。这些是功能齐全的集成开发环境,它们都非常灵活。所有这些都是免费或几乎免费的。

在现代操作系统上编译为DOS编写的现代编译器的OLD代码可能是一个很大的挑战,这取决于应用程序的功能以及编写代码的环境假设的方式:

  • 假设int是16位
  • 是否直接向DOS调用以获取文件信息,打开/读取/写入/关闭文件
  • 是否进行原始键盘输入
  • 直接在屏幕上戳字符和/或像素
  • 是否使用farnear指针,是否存在直接与硬件中断接口的类似驱动程序的组件

在您的问题中突出的一点是提到graphics.h,我认为这是非常具体的Borland。这意味着你必须编写自己的替换函数 - 替换graphics.h函数集(我希望在任何现代操作系统中都可以使用大多数功能,它更像是“它叫什么,我该怎么办”需要为了调用该函数“)。这本身就是一项任务。

这里棘手的部分不仅是识别代码的作用,而且用类似的逻辑替换它,在新环境中做同样的事情。

当然,这一切都取决于你想要用代码做什么,写得多好 - 它是否很好地模块化,每个函数只做一件事和一件事,还是有“这个计算的函数”的价值,然后从磁盘读取一些数据,然后对屏幕进行一些I / O,然后与一些外部硬件进行通信,并且因为它经常接听电话,如果它已经改变,也会更新屏幕上的时间“。