使DEV++与Turbo c++的代码/头文件兼容
Making DEV++ compatible with code/headers from Turbo C++
我在一家工厂工作,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获取文件信息,打开/读取/写入/关闭文件
- 是否做原始键盘输入
- 它是否直接在屏幕上戳字符和/或像素
- 是否使用
far
和near
指针,是否有类似驱动程序的组件直接连接到硬件中断
你的问题中突出的一点是提到了graphics.h
,我认为这是Borland特有的。这意味着你必须编写自己的替代函数-要么是替换graphics.h
函数集(我希望大多数功能在任何现代操作系统中都是可用的,这更多的是"它被称为什么以及我需要什么才能调用该函数")。
这里棘手的部分不仅是识别代码的功能,而且是用类似的逻辑替换它,在您的新环境中做同样的事情。
,当然,这一切都取决于你想做什么代码,如何写,是模块化的,每个函数做一件事,只有一件事,或有函数"这个计算的值,然后从磁盘读取一些数据,然后做一些I/O到屏幕上,然后谈判一些外部硬件,因为它被频繁调用,在屏幕上也更新时间如果它改变了"。
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 此代码编译良好,但文件未创建?请指出错误
- 找不到Linux Visual Studio代码C++文件
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- 如何使代码打印文本文件中的第一行?
- 编译多个C++文件.调用二进制文件以运行代码
- VI工作室代码错误无法打开输出文件主.exe
- 获取 clang++:错误:在编译文件系统库的代码时
- 如何在软件代码中使用ofstream创建文件
- 我可以删除 *.o文件(代码:: blocks)
- 用于人脸检测的Haar级联xml文件代码解释OpenCV
- 如何直接从分配的内存中执行mmaped二进制文件/代码
- 文件 I/O 代码未正确读取C++
- 单个文件代码中未定义的引用错误
- 将数组写入文件代码不起作用(C++)
- IO文件代码不一致
- 如何在单个文件C++代码中使用库
- 是否有可能改变.so文件代码在android工作室本身,并使构建
- 疑难解答阅读CSV文件代码
- Bazel头文件代码生成器