我正在为我的 Pic32 编写一个小源文件函数,但我被困在一件事上。它基本上是一个实用程序,应该将char
传入数据存储到缓冲区中,然后,如果'\r'
收到,它将缓冲区与命令列表(在数组中names
)进行比较,如果找到匹配项,则返回项目的索引。
这部分来自标题:
#define NAMECNT 6
static const char names[NAMESCNT][10] = { // 6commands, max 10 char each
"korr", // 1
"adc", // 2
"fft", // 3
"data", // 4
"pr", // 5
"prsc"}; // 6
/* functions */
extern int comm(char cdata);
在主文件中,有一个大开关:
switch( comm(recieved_ch) ){
case 1: foo1(); break;
case 2: foo2(); break;
...
}
现在,为了更清楚起见,我想使用原始名称(如 )而不是 1、2、...,case KORR: case ADC:
所以我为它们中的每一个都写了定义
#define KORR 1
#define ADC 2
但我不喜欢那个解决方案,因为我想在更多项目中使用这个源文件,并且每个项目都有不同的命令列表。有什么办法可以做到这一点?最好的办法是在预处理器中创建数组名称,但我怀疑这是否可能。我正在考虑使用 enum 类型(它与命令列表具有相同的项目names
),但我不确定它会如何进行。