宏预处理器,多个值

时间:2013-12-13 02:45:13

标签: c macros microcontroller c-preprocessor

我知道人们通常使用单个值定义宏,例如:

#define PIN0 0x01

但是这个具有多个值的意思是什么?

#define POWER_UP 0x02, 0x01, 0x00, 0x01, 0xC9, 0xC3, 0x80

据说,我需要按顺序发送数据包0x02,0x01,0x00 ....如果不使用这个宏,我可能会使用一个数组。但是,工具链会向我生成此宏,但我不知道如何使用它来发送数据包。它看起来不像宏的数组定义。有谁知道我将如何使用它?

3 个答案:

答案 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