代码之家  ›  专栏  ›  技术社区  ›  tsmetana

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

  •  2
  • tsmetana  · 技术社区  · 9 年前

    我在一家工厂工作,那里80%的设备使用MS-DOS接口。我们的工程师都没有c/c++编程方面的经验,因此要求我们为机器界面添加一些功能。我们的自动化团队放弃了MS-DOS平台,转而使用Allen-Bradley控件。尽管我几乎没有c/c++的经验,但我还是觉得自己很有野心,决定承担这个项目。

    关于问题:

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

    有没有方法可以将所有的头从TC++添加到DEV++?例如,添加图形。h到DEV++,并且它是否功能齐全?我曾尝试将它添加到include文件夹,用#include“graphics.h”来调用它,如果DEV++能够识别它,它会抛出大量编译错误,因为它无法识别图形中的内部命令。h文件。

    不幸的是,由于不公开和复制写入策略,我无法包含该项目的任何示例代码。

    我的编程经验: 涉猎 在RSLogigx5005000中;Arduino IDE(不要判断);帕克6K;面板视图~40小时的自学c和c++。

    任何帮助都将不胜感激。

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

    2 回复  |  直到 2 年前
        1
  •  4
  •   Lundin    9 年前

    在某种程度上,旧Turbo C的大部分头文件实际上只是MSDOS API。因此,尝试在任何其他环境中使用这些标头都没有任何意义,而且您不能将它们移植到Windows编译器。类似地, graphics.h 用于Borland特定的DOS图形库BGI,不会在任何其他编译器上运行。

    需要注意的是,旧的Turbo C++(我假设是3.1版?)不太遵循C或C++标准。它使用的C++版本是完全过时的。

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

        2
  •  3
  •   Mats Petersson    9 年前

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

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

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

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

    你的问题中最突出的一点是提到 graphics.h 我认为这是Borland特有的。这意味着你必须编写自己的替换函数——要么是替换函数 图形.h 一组函数(我希望大多数功能在任何现代操作系统中都可用,更多的是“它被调用了什么,我需要什么才能调用该函数”)。这本身可能是一项艰巨的任务。

    这里的棘手之处不仅在于识别代码的功能,还在于用类似的逻辑替换它,在新环境中也会做同样的事情。

    当然,这一切都取决于你想对代码做什么,它写得有多好-它是否很好地模块化,每个函数是否只做一件事,或者是否有这样的函数:“它计算的值,然后从磁盘读取一些数据,然后对屏幕进行一些I/O,然后与一些外部硬件进行对话,因为它经常被调用,所以如果屏幕上的时间发生了变化,它也会更新”。