根据该指南: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
有人可以向我解释为什么不起作用?
答案 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);