大佬教程收集整理的这篇文章主要介绍了Arduino C++ 取消引用#define 或 const int?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对我的 C++ 非常生疏,所以如果这根本不是关于取消引用的问题,请原谅我。但我认为这是正确的术语。
我正在整理一个 Arduino 草图,以发送原始红外信号来模拟红外控制器。
为了实现这一点,我发送了一个 JsON 字符串,该字符串引用了我包含的头文件中定义的信号。我正在考虑为每个控制器创建一个单独的文件,并且我想在每个标头中使用 #define 语句以确保我能够很好地分离每个信号名称。如果你愿意的话,可以说是我自己的命名空间。
所以在标题中我有遥控器上的电源按钮的这个信号:
#include <stdint.h>
#include <Arduino.h>
#define AKB73575431_DATA_LEN 69
String AKB73575431_mfr = "LG";
uint16_t AKB73575431_power [AKB73575431_DATA_LEN] = {
4400,4600,550,600,500,1650,1700,650,1000
};
你们中的一些人可能会认出这种数据格式是直接从 IRlib2 教程中抄袭而来的。
我想发送一个 JsON 字符串:
{"cmd": "txIRraw","key": "AKB73575431_power"}
我的问题是我可以解析“key”值中的字符串并使用子字符串:
AKB73575431
构造对定义的引用:
#define AKB73575431_DATA_LEN 69
如果失败,是否可以将定义更改为全局 int 并取消引用它?
我一直在谷歌上搜索 C++ 中的解引用变量,但一直在获取有关指针的页面。我想要做的是从字符串构造变量或#define 名称,然后使用它。
这可能吗,如果可能,有人能给我举个例子吗?
非常感谢
卡利
如果我正确理解您的问题,您正在尝试查看是否可以使用字符串 "AKB73575431"
,创建具有相同名称 AKB73575431
的变量,并分配 {{ 1}} 到它。
快速回答是否定的。您不能基于另一个字符串的值创建变量名称。
你可以使用两种不同的方法来达到类似的效果(我猜)。
首先,您可以使用宏。
你可以反过来做一些事情。假设您要创建多个前缀为 AKB_LEN
的变量,例如 AKB_
、AKB_len
、AKB_power
。你可以用宏来做到这一点:
AKB_mfr
所以你可以像这样使用它:
#define create(NAME,value) decltype(value) AKB_##NAME{value}
或:
create(LEN,10); // create a variable called `AKB_LEN`,and has the value of 10
但是,我不推荐这个。很难获得您创建的变量名称,因为它们隐藏在宏下。如果您有另一个名称不同的遥控器,则需要创建一个全新的宏功能,以使其工作。
第二种方式是通过OOP。您将创建一个 String s = "abc";
create(S,s); // create a variable called `AKB_S`,and has the type String and value "abc"
类,并且 Remote
可能具有不同的成员,例如 name、mfr 和 power:
Remote
然后你可以像这样创建 struct Remote
{
std::string name;
std::string mfr;
std::vector<int> power;
}
:
Remote
然后您可以使用 Remote AKB{"AKB",AKB_mfr,{std::being(AKB_power},std::end(AKB_power)};
、AKB.mfr
之类的东西访问它的数据
此外,您还@R_696_9838@没有 AKB.power
成员的 Remote
类,并将遥控器存储在地图容器中:
name
然后您@R_696_9838@如下地图:
struct Remote
{
std::string mfr;
std::vector<int> power;
}
并向地图添加新的遥控器,例如:
std::map<std::string,Remote> Remotes;
现在,如果您想从地图访问名为 Remotes.emplace("AKB",Remote{AKB_mfr,{std::begin(AKB_power),std::end(AKB_power)}});
的遥控器,您可以执行以下操作:
"AKB"
以上是大佬教程为你收集整理的Arduino C++ 取消引用#define 或 const int?全部内容,希望文章能够帮你解决Arduino C++ 取消引用#define 或 const int?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。