宏参数HEX和DEC

时间:2018-11-19 08:59:30

标签: c++ arduino macros

根据该指南:enter link description here

我写道:

#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

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

1 个答案:

答案 0 :(得分:0)

查看错误消息。您已定义此宏:

#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);