1

I wrote simple program to test debug macros, but it gives me compilation error

Program:

#include <Arduino.h>

#define DEBUG

#ifdef DEBUG
  #define DPRINT(...)    Serial.print(__VA_ARGS__)
  #define DPRINTLN(...)  Serial.println(__VA_ARGS__)
#else
  // define blank line
  #define DPRINT(...)
  #define DPRINTLN(...)
#endif


void setup() {
  // put your setup code here, to run once:
  String str ="Hello MrNams";
  DPRINT("Here is my string %s",str);
}

void loop() {
  // put your main code here, to run repeatedly:
}

Compilation Error:

src/main.cpp: In function 'void setup()': src/main.cpp:7:50: error: no matching function for call to 'HardwareSerial::print(const char [21], String&)' #define DPRINT(...) Serial.print(VA_ARGS) ^ src/main.cpp:19:3: note: in expansion of macro 'DPRINT' DPRINT("Here is my string %s",str); ^~~~~~ In file included from C:/Users//.platformio/packages/framework-arduinoespressif32/cores/esp32/Stream.h:26, from C:/Users//.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:177, from src/main.cpp:2: C:/Users//.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:81:12: note: candidate: 'size_t Print::print(const __FlashStringHelper*)' size_t print(const __FlashStringHelper *); ^~~~~ C:/Users//.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:81:12: note: candidate expects 1 argument, 2 provided
C:/Users//.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:82:12: note: candidate: 'size_t Print::print(const String&)'
size_t print(const String &);

3
  • Serial.print doesn't support variable arguments Commented May 13, 2023 at 16:57
  • format the error log as code Commented May 13, 2023 at 19:43
  • This: ("Here is my string %s",str); cannot be handed over to Serial.print() which is effectively what you are doing. The argument set appears to be more appropriate for the C++ function printf(). Commented May 14, 2023 at 9:19

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.