宏参数HEX和DEC



根据该指南:在此处输入链接描述

我写道:

#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(x)  Serial.print (x)
#define DEBUG_PRINTLN(x)  Serial.println (x)
#define DEBUG_PRINT_HEX(x)  Serial.print (x, HEX)
#define DEBUG_PRINT_DEC(x)  Serial.print (x, DEC)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTLN(x)
#define DEBUG_PRINT_HEX(x)
#define DEBUG_PRINT_DEC(x)
#endif

如果我调用一个函数:

uint32_t versiondata;
DEBUG_PRINT_HEX((versiondata>>24) & 0xFF, HEX);
DEBUG_PRINT_DEC((versiondata>>16) & 0xFF, DEC);
uint8_t uidLength;
DEBUG_PRINT_DEC(uidLength, DEC);

编译器给我的是:

error: macro "DEBUG_PRINT_DEC" passed 2 arguments, but takes just 1
error: macro "DEBUG_PRINT_HEX" passed 2 arguments, but takes just 1

有人可以解释我为什么不起作用?

查看错误消息。您已经定义了这个宏:

#define DEBUG_PRINT_HEX(x)

这个宏需要一个参数:x

您用两个参数调用宏:

DEBUG_PRINT_HEX((versiondata>>24) & 0xFF, HEX);  

1个自变量:(versiondata>>24) & 0xFF

2自变量:HEX

只需这样调用宏:

DEBUG_PRINT_HEX((versiondata>>24) & 0xFF);  

最新更新