Arduino语言和C语言很像,比如先定义变量再使用,也可以采用 #define 进行一些预定义等等,但又有一些不同。
当一个文件中的代码理过多时,如果想把它们分开成多个文件,则涉及到两部分的内容:函数和变量。
C语言的函数定义,分为头文件和源文件,但在Arduino中,只有一个文件,即 .hpp,直接在此文件中进行函数实现,在需要调用函数的文件中包含此 .hpp 文件,变量也是一样,直接在 .hpp 中声明,而无需在源文件中声明,在 .hpp 文件中采用 extern 声明。
如下所示:
// 1.hpp 文件
extern int g_year;
// 1.c 文件
int g_year;
// 2.ino 文件(工程主文件)
#include "1.hpp"
void setup()
{
}
void loop()
{
}
这样会导致编译不通过,因为在Arduino中,修似乎根本就没有 .c 文件,所以需要改成如下的样子:
// 1.hpp 文件
int g_year;
// 2.ino 文件(工程主文件)
#include "1.hpp"
void setup()
{
}
void loop()
{
}
即直接在 1.hpp 中声明变量,在其它文件中使用即可。如下所示的函数:
// h1.hpp 文件
int gGetKey();
// h1.c 文件
int gGetKey()
{
return 9;
}
// 2.ino 文件(工程主文件)
#include "h1.hpp"
void setup()
{
}
void loop()
{
int key = gGetKey();
}
这样显示也是编译不过的,它看上去和c的规则完全一样,但却是错误的,应该改成如下的样子:
// h1.hpp 文件
int gGetKey()
{
return 9;
}
// 2.ino 文件(工程主文件)
#include "h1.hpp"
void setup()
{
}
void loop()
{
int key = gGetKey();
}
同样的是,不需要 .c 文件,而是直接在.hpp中实现函数即可