git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Numeric constants as strings

From
MWMark 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]
Previous: Andy ParkinsNext: Andy Parkins
Message 9 of 11 in “Numeric constants as strings”
  1. Andy ParkinsFeb 19, 2007
  2. Junio C HamanoFeb 19, 2007
  3. Shawn O. PearceFeb 19, 2007
  4. Matthieu MoyFeb 19, 2007
  5. Andy ParkinsFeb 19, 2007
  6. Andy ParkinsFeb 19, 2007
  7. Junio C HamanoFeb 19, 2007
  8. Andy ParkinsFeb 19, 2007
  9. Mark WoodingFeb 19, 2007
  10. Andy ParkinsFeb 19, 2007
  11. Jakub NarebskiFeb 20, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.