我确实有一个字符串状态消息列表。每个状态消息都有一个单独的整数状态码,如下所示:
{0, "INITIAL STATE"},
{12, "ERROR INVERTER COMMUNICATION"},
{42, "INITIAL CHARGE"},
{158, "MAINTENANCE CHARGE"},
...
事实上,列表大约有200个条目,256是最大状态码。现在我想引用从设备读取的statuscode (int)的相应字符串。我一直在寻找使用这样的结构体:
typedef struct {
int Statuscode;
String StatusString;
} StatusCodes;
和这样的定义:
StatusCodes MyStatuscodes[] = {
{0, "INITIAL STATE"},
{12, "ERROR INVERTER COMMUNICATION"},
{42, "INITIAL CHARGE"},
{158, "MAINTENANCE CHARGE"},
};
我的问题:
- 当我得到状态码例如12,我如何得到各自的字符串?
- 有比使用结构体更好的方法吗?
- 我应该使用"char *"而不是"String"?
- 理想情况下,我想将消息引用列表移动到。h文件,这会有影响吗?
我认为这一定有一个简单的解决方案,但是作为c++的新手,我正在努力寻找一个好的解决方案,除了可能转换为JSON和解析这个。
list大约有200个条目
最多256个。代码。
有比使用结构体更好的方法吗?
考虑一个const char *
的数组。
考虑在一些error.cpp文件
#incldue "error.h"
const char *StatusString[STATUSSTRING_N] = {
"INITIAL STATE",
"UNUSED 1",
...
"UNUSED 11",
"ERROR INVERTER COMMUNICATION"
...
};
和一些error.h文件
#define STATUSSTRING_N 257
extern const char *StatusString[STATUSSTRING_N];
当我得到一个状态码例如12,我如何得到各自的字符串?
if (statuscode >= 0 && statuscode < STATUSSTRING_N) {
return StatusString[statuscode];
}