Debug Macro Compilation Errror

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/<User Name>/.platformio/packages/framework-arduinoespressif32/cores/esp32/Stream.h:26,
                 from C:/Users/<User Name>/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:177,
                 from src/main.cpp:2:
C:/Users/<User Name>/.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/<User Name>/.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:81:12: note:   candidate expects 1 argument, 2 provided       
C:/Users/<User Name>/.platformio/packages/framework-arduinoespressif32/cores/esp32/Print.h:82:12: note: candidate: 'size_t Print::print(const String&)'  
     size_t print(const String &);

No.

Serial.print and Serial.println are not variadic functions like printf() is. The function has different overloads for the fundamental datatypes, like const char*, int , float`, etc, that is supposed to be printed, but no format specifiers.

Different Arduino-core implementations might give you the option of Serial.printf() which you can then use.

Just follow the source code for this.