我知道人们通常使用单个值定义宏,例如:
#define PIN0 0x01
但是这个具有多个值的意思是什么?
#define POWER_UP 0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3, 0x80
据说,我需要按顺序发送数据包0x02,0x01,0x00 ....如果不使用这个宏,我可能会使用一个数组。但是,工具链会向我生成此宏,但我不知道如何使用它来发送数据包。它看起来不像宏的数组定义。有谁知道我将如何使用它?
答案 0 :(得分:2)
//test.c
#define POWER_UP 0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3, 0x80
POWER_UP
#only preprocessing
>gcc -E test.c
# 1 "test.c"
# 1 "<command-line>"
# 1 "test.c"
0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3, 0x80
正如您所看到的,它会将值替换为您的值列表。
答案 1 :(得分:2)
不确定您对数据包的要求(更多代码会有所帮助),但是:
char vals[] = { POWER_UP };
size_t i;
for (i = 0; i < sizeof(vals); ++i) {
/* do something with vals[i] */
}
答案 2 :(得分:0)
只要引用0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3, 0x80
宏,它就会扩展为POWER_UP
。