Макро аргументы HEX и DEC - PullRequest
0 голосов
/ 19 ноября 2018

Согласно этому руководству: введите описание ссылки здесь

я написал:

#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 голосов
/ 19 ноября 2018

Посмотрите на сообщение об ошибке.Вы определили этот макрос:

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