使DEV++与Turbo c++的代码/头文件兼容

Making DEV++ compatible with code/headers from Turbo C++

本文关键字:文件 代码 DEV++ Turbo c++      更新时间:2023-10-16

我在一家工厂工作,80%的设备使用MS-DOS接口。我们的工程师都没有c/c++编程的经验,所以他们要求我们在机器界面上添加一些功能。我们的自动化组已经放弃了MS-DOS平台,转而使用Allen-Bradley控件。尽管我对c/c++几乎没有任何经验,但我还是雄心勃勃,决定承担这个项目。

关于问题:

所有的程序都是用Turbo c++编写和编译的。出于各种原因(易用性、附加头文件、更发达的c++平台等),我更愿意使用DEV++。问题是现有的编程严重依赖于来自tc++的非标准头文件。在DEV++源代码中有10个左右的头文件不可用,使用更现代的结构重写代码不是一个选择;我们将失去我们仅有的一点支持,我们的AG,时间等。

是否有一种方法,我可以添加所有的头从tc++到dev++ ?例如,将graphics.h添加到DEV++中并使其具有完整的功能?我试过将它添加到包含文件夹中,用#include"graphics.h"调用它,如果DEV++设法识别它,它会抛出大量编译错误,因为它不识别graphics.h文件中的内部命令。

不幸的是,由于保密和复制策略,我不能包括这个项目的任何示例代码。

我的编程经历:在rlogigx500,5000;Arduino IDE(不要评判);帕克6K;PanelView;~40小时自学c和c++

任何帮助都将非常感激。

非常有用的信息。考虑到硬件的过时程度和我在这个项目上的限制,这似乎是不可能的,但是感谢你们所有人的投入。

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

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

还要注意Dev c++ IDE已经过时,不再更新GCC编译器。CodeBlocks IDE是更好的选择。

这更像是一个"长评论",而不是对你的问题的直接回答,试图引导你更好地理解你在项目中可能面临的挑战。

我个人会选择更"专业"的开发工具。要么是Eclipse(优点是它是可移植的,无论你使用Windows还是Linux,它的外观/感觉都是一样的),XCode(只适用于Mac)或Visual Studio(只适用于Windows)。这些都是功能齐全的集成开发环境,它们都非常灵活。它们都是免费或近乎免费的。

将为DOS编写的旧代码编译成现代操作系统上的现代编译器可能是一个相当大的挑战,这取决于应用程序的功能以及编写代码时对环境的假设程度:

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

你的问题中突出的一点是提到了graphics.h,我认为这是Borland特有的。这意味着你必须编写自己的替代函数-要么是替换graphics.h函数集(我希望大多数功能在任何现代操作系统中都是可用的,这更多的是"它被称为什么以及我需要什么才能调用该函数")。

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

,当然,这一切都取决于你想做什么代码,如何写,是模块化的,每个函数做一件事,只有一件事,或有函数"这个计算的值,然后从磁盘读取一些数据,然后做一些I/O到屏幕上,然后谈判一些外部硬件,因为它被频繁调用,在屏幕上也更新时间如果它改变了"。