Re: Numeric constants as strings
- From
- Mark Wooding <mdw@distorted.org.uk>
- Date
- Feb 19, 2007, 10:04 UTC
- Message-ID
- <slrnetitgs.sbe.mdw@metalzone.distorted.org.uk>
- In-Reply-To
- <200702190916.35813.andyparkins@gmail.com>
Andy Parkins <andyparkins@gmail.com> wrote:
Show 6 quoted lines
> I'm working on bringing my hash width literals patch up to date now
> that 1.5.0 has passed. It's all been trivial apart from one line:
>
> #define HASH_WIDTH_ASCII 40
> - printf("%-40s %s%s (%d subtrees)\n",
> + printf("%-" HASH_WIDTH_ASCII "s %s%s (%d subtrees)\n",The standard two-step goes
#define STRINGIFY(foo) STRINGIFY_REALLY(foo) #define STRINGIFY_REALLY(foo) #foo
The purpose of STRINGIFY_REALLY is to macro-expand the argument foo. If you just invoked STRINGIFY_REALLY
printf("%-" STRINGIFY_REALLY(HASH_WIDTH_ASCII) "s %s%s (%d subtrees)\n", you'd get
printf("%-HASH_WIDTH_ASCIIs %s%s (%d subtrees)\n", ...which is not what you wanted. However,
printf("%-" STRINGIFY(HASH_WIDTH_ASCII) "s %s%s (%d subtrees)\n", will do the right thing.
-- [mdw]