栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Arduino的全局变量的单独定义

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号