<分区>
我正在尝试编译一个 arduino 程序。
我想要一些已经编译的文件,除了草图之外的所有文件。我已经修改了 arduino IDE 以仅编译未编译的文件,但我需要拥有所有文件的 .h 文件。
是否可以在 CPP 中编译一个文件,其他文件都在 .o 而没有 .h?
我不希望任何人看到我的文件或代码,包括 .h。
如果可能,我将开始检查 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/