Did MAX() not work? I would expect it to do compile time comparison of two sizeof()s. It can do other arithmetic no problem, e.g.: https://elixir.bootlin.com/linux/v6.13.7/source/lib/vsprintf.c#L1097