From 27629a7d65915361b88b1500d2470114cd0c3dd6 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 20 Feb 2023 19:18:47 +0100 Subject: [PATCH] MINOR: compiler: add a TOSTR() macro to turn a value into a string Pretty often we have to emit a value (setting, limit etc) in an error message, and this value is known at compile-time, and just doing this forces to use a printf format such as "%d". Let's have a simple macro to turn any other macro or value into a string that can be concatenated with the rest of the string around. This simplifies error messages production on the CLI for example. --- include/haproxy/compiler.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/haproxy/compiler.h b/include/haproxy/compiler.h index 2f23c7456..5b9c668bb 100644 --- a/include/haproxy/compiler.h +++ b/include/haproxy/compiler.h @@ -199,6 +199,13 @@ */ #define ONLY_ONCE() ({ static char __cnt; !_HA_ATOMIC_XCHG(&__cnt, 1); }) +/* makes a string from a constant (number or macro), avoids the need for + * printf("%d") format just to dump a setting limit or value in an error + * message. We use two levels so that macros are resolved. + */ +#define _TOSTR(x) #x +#define TOSTR(x) _TOSTR(x) + /* * Gcc >= 3 provides the ability for the program to give hints to the * compiler about what branch of an if is most likely to be taken. This