Preprocessor question

Stephen Vinoski vinoski at apollo.HP.COM
Fri Apr 19 04:39:00 AEST 1991


In article <AHUTTUNE.91Feb16230548 at silver-surfer.hut.fi> ahuttune at niksula.hut.fi (Ari Juhani Huttunen) writes:
>I would like to do the following or something similar:
>
>#define BLOCK_SIZE 1024
>
>char *message = "The block size is " # BLOCK_SIZE " bytes.";
>
>I need the result: "The block size is 1024 bytes."
>
>I know what I am doing wrong, but HOW should I do it? These alternatives
>are no good:
>	- #define BLOCK_SIZE_STRING "1024"
>	- char *message = "The block size is 1024 bytes.";

How about:

#define BLOCK_SIZE 1024
#define REALSTR(x) #x
#define STR(x) REALSTR(x)

char *message = "The block size is " STR(BLOCK_SIZE) " bytes.";



-steve
| Steve Vinoski  (508)256-0176 x5904       | Internet: vinoski at apollo.hp.com  |
| HP Apollo Division, Chelmsford, MA 01824 | UUCP: ...!apollo!vinoski         |
| "The price of knowledge is learning how little of it you yourself harbor."  |
|                                                    - Tom Christiansen       |



More information about the Comp.std.c mailing list