Arduino的全局变量的单独定义

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中实现函数即可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值