我正在创建一个新的库来控制键盘和LCD.大多数代码似乎都在编译,但当它到达我定义LiquidCristal变量的行时,它会说:
创建自定义库时,"LiquidCrystal"未指定类型
这是我的LCDKeypad.h的内容摘录
// Include types & constants of Wiring core API
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#include "WConstants.h"
#endif
// Include LCD library
#include <LiquidCrystal.h>
Run Code Online (Sandbox Code Playgroud)
错误在这一行:
private:
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); // <<-- Error
Run Code Online (Sandbox Code Playgroud)
好吧,我正在阅读很多,我发现了一篇关于这个主题的非常有趣的文章:
它表示编译器不会搜索未包含在草图文件中的库.破解这种方法的方法是强制编译器在加载库之前链接它们,包括在草图中的LiquidCrystal.h.
假设我的库"LCDkeypad"需要LiquidCrystal.我的主程序(草图)需要包含LiquidCrystal才能为我的库"LCDKeypad"加载它.
现在,一个有趣的事情是使用前向声明,所以在我的LCDKeypad.h中,我将声明"Class LiquidCrystal"但不包括库.我将在LiquidCrystal.cpp和草图中完成.我希望这很清楚.