Hi Philippe,

On Wed, Jul 5, 2023 at 11:35 PM Philippe Mathieu-Daudé <[email protected]>
wrote:

> Hi Konstantin,
>
> On 5/7/23 16:12, Konstantin Kostiuk wrote:
> > Signed-off-by: Konstantin Kostiuk <[email protected]>
> > ---
> >   qga/vss-win32/vss-debug.h | 31 +++++++++++++++++++++++++++++++
> >   1 file changed, 31 insertions(+)
> >   create mode 100644 qga/vss-win32/vss-debug.h
>
>
> > +#define PRINT_DEBUG(fmt, ...) {
>        \
> > +    char user_sting[512] = { 0 };
>        \
> > +    char full_string[640] = { 0 };
>       \
> > +    snprintf(user_sting, 512, fmt, ## __VA_ARGS__);
>        \
> > +    snprintf(full_string, 640, QGA_PROVIDER_NAME"[%lu]: %s %s\n",
>        \
> > +        GetCurrentThreadId(), __func__, user_sting);
>       \
> > +    OutputDebugString(full_string);
>        \
> > +    fprintf(stderr, "%s", full_string);
>        \
> > +}
>
> Why not simply use a plain function?
>

I am not sure what you mean.

If you mean to call OutputDebugString directly, then we need to concatenate
the proper string
for each call.
If you mean convert PRINT_DEBUG to function, then we can't use the __func__
macro in
PRINT_DEBUG to get the real function name. We can convert PRINT_DEBUG to
function
and a new macro that will call PRINT_DEBUG and pass a proper value of
__fucn__.

What solution is better there?


>
> > +#define PRINT_DEBUG_BEGIN PRINT_DEBUG("begin")
> > +#define PRINT_DEBUG_END PRINT_DEBUG("end")
> > +
> > +#endif
>
>

Reply via email to