Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #12860

Re: A variation of #

From James Kuyper <jameskuyper@verizon.net>
Newsgroups comp.lang.c
Subject Re: A variation of #
Date 2011-11-07 18:31 -0500
Organization A noiseless patient Spider
Message-ID <4EB86A45.7030305@verizon.net> (permalink)
References <8f2cadb2-614d-4754-8bc3-bb7c063524ae@c16g2000pre.googlegroups.com> <9hqo41F4bgU2@mid.individual.net> <73822171-7a92-4420-9eea-e74bbeda1ff8@x28g2000prb.googlegroups.com> <4EB83A82.1080100@verizon.net> <v44mo8-lfm.ln1@jones.homeip.net>

Show all headers | View raw


On 11/07/2011 05:53 PM, lawrence.jones@siemens.com wrote:
> James Kuyper <jameskuyper@verizon.net> wrote:
>>
>> #include <stdlib.h>
>> #define TRICAT(a, b, c) a ## b ## c
>> #define CHAR(a, b, c) TRICAT(a, b, c)
>>
>> #define CASE1 x
>>
> ...
>>     case CHAR('
>>         , CASE1, '
>>         ): break;
> 
> Nice try, but no cigar.  The ## operator requires that the result be a
> valid pp-token and, depending on the order in which the operators are
> evaluated, you either end up with 'x or x', neither of which are valid
> pp-tokens.

I hadn't considered that issue, but taking a look at 6.10.3.3p3, I found
that it says "each each instance of a ## preprocessing token
in the replacement list (not from an argument) is deleted and the
preceding preprocessing token is concatenated with the following
preprocessing token. ... If the result is not a valid preprocessing
token, the behavior is undefined." It seems to me ambiguous whether "the
result" it refers to is the result of each concatenation, or the
combined result of all of the concatenations.

I'm not going to argue strongly over this. I think this is a horribly
ugly solution to what should be a simple problem; if it actually fails
to be a solution by reason of having undefined behavior, I'm not going
to lose any sleep over it.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

A variation of # Andrey Vul <andrey.vul@gmail.com> - 2011-11-07 10:53 -0800
  Re: A variation of # Ian Collins <ian-news@hotmail.com> - 2011-11-08 07:59 +1300
    Re: A variation of # Andrey Vul <andrey.vul@gmail.com> - 2011-11-07 11:11 -0800
      Re: A variation of # James Kuyper <jameskuyper@verizon.net> - 2011-11-07 15:07 -0500
        Re: A variation of # lawrence.jones@siemens.com - 2011-11-07 17:53 -0500
          Re: A variation of # James Kuyper <jameskuyper@verizon.net> - 2011-11-07 18:31 -0500
            Re: A variation of # lawrence.jones@siemens.com - 2011-11-08 09:16 -0500
          Re: A variation of # Thad Smith <ThadSmith@acm.org> - 2011-11-07 19:51 -0700
          Re: A variation of # Harald van Dijk <truedfx@gmail.com> - 2011-11-08 09:01 -0800
            Re: A variation of # James Kuyper <jameskuyper@verizon.net> - 2011-11-08 12:15 -0500
        Re: A variation of # Andrey Vul <andrey.vul@gmail.com> - 2011-11-07 17:32 -0800
          Re: A variation of # James Kuyper <jameskuyper@verizon.net> - 2011-11-07 21:17 -0500
    Re: A variation of # Andrey Vul <andrey.vul@gmail.com> - 2011-11-07 11:08 -0800
  Re: A variation of # Peter Nilsson <airia@acay.com.au> - 2011-11-07 16:46 -0800

csiph-web