From: Willy Tarreau Date: Mon, 20 Feb 2023 18:18:47 +0000 (+0100) Subject: MINOR: compiler: add a TOSTR() macro to turn a value into a string X-Git-Tag: v2.8-dev5~140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27629a7d65915361b88b1500d2470114cd0c3dd6;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/include/haproxy/compiler.h b/include/haproxy/compiler.h index 2f23c74560..5b9c668bb4 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