home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11533 < prev    next >
Encoding:
Internet Message Format  |  1992-07-23  |  1.5 KB

  1. Path: sparky!uunet!crdgw1!rdsunx.crd.ge.com!bart!volpe
  2. From: volpe@bart.NoSubdomain.NoDomain (Christopher R Volpe)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Concatenation of two macros?
  5. Message-ID: <1992Jul23.203328.26199@crd.ge.com>
  6. Date: 23 Jul 92 20:33:28 GMT
  7. References: <1FE7B81211DF800725@ursula.lucas.lu.se> <1992Jul23.152318.8369@progress.com>
  8. Sender: volpe@bart (Christopher R Volpe)
  9. Reply-To: volpe@ausable.crd.ge.com
  10. Organization: GE Corporate Research & Development
  11. Lines: 41
  12. Nntp-Posting-Host: bart.crd.ge.com
  13.  
  14. In article <1992Jul23.152318.8369@progress.com>, briggs@progress.COM (Scott Briggs) writes:
  15. |> KOSU_MATSB@ROUTH.KOSUFY.LU.SE writes:
  16. |> 
  17. |> 
  18. |> >    Concatenation of two macros. Is it possible?
  19. |> 
  20. |> >    If i have the following two definitions:
  21. |> >        #define A pre
  22. |> >        #define B post
  23. |> >    And want to "#define C" to be  "prepost" BUT as an 
  24. |> >    expression of A and B! How do i do it?
  25. |> >    #define C (expression of A and B to yield prepost)
  26. |> 
  27. |> Depending on the compiler one of the following should work:
  28. |> 
  29. |> #define C A##B
  30.  
  31. On what broken compiler does the above not yield "AB"???
  32.  
  33. |> 
  34. |>   or
  35. |> 
  36. |> #define C A/**/B
  37.  
  38. I believe most pre-ANSI compilers will yield "AB" for that too.
  39.  
  40. And if you're interested in a solution that actually works on ANSI
  41. conforming compilers, try the following:
  42.  
  43. #define A pre
  44. #define B post
  45. #define CATX(x,y) x ## y
  46. #define CAT(x,y) CATX(x,y)
  47. #define C CAT(A,B)
  48.  
  49.  
  50. -- 
  51. ==================
  52. Chris Volpe
  53. G.E. Corporate R&D
  54. volpecr@crd.ge.com
  55.