c++ - 在 Arduino IDE 中链接预建对象

标签 c++ compiler-construction arduino

<分区>

我正在尝试编译一个 arduino 程序。

我想要一些已经编译的文件,除了草图之外的所有文件。我已经修改了 arduino IDE 以仅编译未编译的文件,但我需要拥有所有文件的 .h 文件。

是否可以在 CPP 中编译一个文件,其他文件都在 .o 而没有 .h?

我不希望任何人看到我的文件或代码,包括 .h。

如果可能,我将开始检查 arduino 代码,寻找如何修改它,但如果不可能,我将不得不寻找其他方法。

最佳答案

Arduino 使用 C++,编译后的 C++ 函数名称被破坏以包含对象 (.o) 文件中的参数类型。用户代码使用兼容的名称修饰编译的唯一方法是在编译时具有完整的函数声明。

因此您至少必须提供一个头文件,其中包含用户将调用的任何函数的完整函数声明。这不是 secret ,这是您的 API,如果您不告诉用户,用户将无法使用它。

您不需要在公共(public)头文件中包括内部私有(private)函数或数据类型的声明或定义。

因此,创建一个 library_public.h 文件,其中仅包含用户应该知道的声明,并将其与您的 .o 文件一起提供。然后创建一个包含所有 secret 内容的 library_private.h。您的私有(private)源代码将包括两者。

关于c++ - 在 Arduino IDE 中链接预建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16674272/

相关文章:

c++ - 为什么 auto_ptr 不支持 op->*()

arduino - Arduino 引导加载程序可以在所有 AVR 上工作吗?

Python正则表达式测试句子是否有效

audio - SimpleSDAudio Error 48含义

c++ - Arduino 没有读取适当数量的字节

c++ - 无法构造对象

c++ - 代码未编译

c++ - 如何在 QSqlQuery 中使用变量?

c++ - 将目标文件的所有符号编译为 Weak

compiler-construction - 在 Scala 中更好地对匹配进行类型检查