最优雅的方式来存储串口设备的字符串命令?

Maq*_*fel 1 c serial-port

假设我正在与串行端口设备通信并且具有用于控制这种设备的大量命令(74).这是存储和使用它们的最佳方式吗?

当然,我可以通过以下方式组织它们:

static char *cmd_msgs[] =
{
    "start",
    "stop",
    "reset",
    "quit",
    "",
    "",
    "",
    "",
    ...
};
Run Code Online (Sandbox Code Playgroud)

或人类可读:

char cmd_start_str[] = "start";
...
char cmd_quit_str[] = "quit";
Run Code Online (Sandbox Code Playgroud)

有人能指出一个处理这样一个任务的工作案例吗?

小智 5

第一种方法很好 - 不要使用具有唯一名称的许多全局变量,特别是当您想要循环它们时,它们很难引用.这就是字符串数组的目的(你的第一种方式).如果您需要人类可读的代码(您应该使用它),请使用一个明确命名的枚举,其值与实际命令字符串相对应.所以做点什么

const char *cmds[] = {
    "command 1",
    "command 2",
    "Print Hello World",
    "Explode House"
};

enum {
    COMMAND_ONE,
    COMMAND_TWO,
    COMMAND_SAYHELLO,
    COMMAND_BOOM
};
Run Code Online (Sandbox Code Playgroud)

这样您就可以通过索引数组来轻松引用命令,但是通过编写cmds[COMMAND_SAYHELLO]等仍然可以获得可读性.