如何在Arduino程序中包含代码段(不是对象)?

时间:2019-06-11 21:31:32

标签: arduino include

问题已解决!!!解决方法请参见下文

我正要发布此问题,并决定再次检查网络。这个网站https://www.freepascal.org/docs-html/prog/progsu40.html 包含以下语句:{$ I filename}或{$ INCLUDE filename}指令告诉编译器从文件文件名读取更多语句。在此处读取的语句将被插入,就好像它们出现在当前文件中一样。 这正是我想对Arduino进行的操作。我该怎么办?

我的技能: 自1967年以来就开始编写代码。所以我对编程/调试并不陌生。大型机和PC。非常扎实的COBOL和SAS技能。 Borland / Lazarus对象Pascal的良好技能。 C / C ++技能薄弱。

背景: 我有两个在模型铁路上使用的可以工作的Arduino程序。 Prog1使用红外传感器来点亮LED,以指示火车在隧道中的位置。我构建了IRSensor类来处理单个传感器。 Prog2使用按钮设置通过多个轨道开关的路线。每个轨道开关均通过伺服器设置。我将Servo类扩展到TOServo,该类封装了每个轨道开关中的大多数通用性。

现在我正在开发另一条模型铁路,需要将Prog1和Prog2合并到一个程序中。通过复制/粘贴程序1和2构建Prog3非常困难。

问题:
如何告诉Arduino预处理器/编译器“在此处插入文件名;除非文件名被包裹在文件中以进行插入,否则不要对其进行编译,预编译或其他处理”?

我尝试过的方法: 我通过将Prog2的代码分为3部分来构建Prog3:主程序存储和代码以及2个include语句(TOServo的存储定义和可执行代码)。这些include语句引入定义或访问TOServo数组的代码。我使用了多个后缀(.h / .ino和.h / .cpp和.c / .c),它们都生成“未在此范围内声明”错误。

最后: 感谢您的帮助。


解决方案 我的.ino文件过大且笨拙。解决方案是将一大段代码和匹配的声明移至外部.h / .cpp文件,并通过#include语句访问这些​​文件。该程序将无法编译(未定义的变量);实际上,它们是已定义的,但是编译器找不到它们。经过多次修复或重新排列代码的尝试,终于让我想到了两件事。

1)Arduino预编译器更改(重新排列?)我的代码,以便C ++和Arduino CPU可以一起工作。这意味着我看到的代码并不总是编译器看到的代码。

2)我的.h / .cpp文件定义和管理一系列伺服对象。我可以将那些文件转换为从主.ino文件访问的对象。

所以我解决了我的问题。感谢所有在许多论坛/站点上发布的人员,特别是感谢Tarick Welling一直陪在我身边的人。

0 个答案:

没有答案