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


Groups > comp.lang.c > #101289

Re: Macro Expansion

From BartC <bc@freeuk.com>
Newsgroups comp.lang.c
Subject Re: Macro Expansion
Date 2017-01-08 13:10 +0000
Organization A noiseless patient Spider
Message-ID <o4tdl4$1k5$1@dont-email.me> (permalink)
References <o4rcbl$4cp$1@dont-email.me> <878tqlykwg.fsf@news.bourguet.org>

Show all headers | View raw


On 08/01/2017 09:13, Jean-Marc Bourguet wrote:
> BartC <bc@freeuk.com> writes:
>
>> I've knocked up a short script program to implement CPP macro expansion. It
>> works with many of the examples I've tried, but I have little confidence
>> that whatever I end up with will always work, as I'm guessing at the
>> algorithms needed.
>>
>> The descriptions I've seen of the process seem to me ambiguous and
>> difficult to understand (maybe they're striving to be as cryptic as the
>> language they are describing!).
>
> Have you looked at the latest standard?

I use one for 201x dated 2009.

   I just looked at C90, C99 and C11
> and it seems to be improving. For instance they make clear that given the
> following macro definitions:
>
>     #define f(a) a*g
>     #define g(a) f(a)
>     #define h(a) a*h
>
> the invocation
>
>     f(2)(9)

I didn't even know you could do this! This is a simpler example:

    #define a b
    #define b(x) x x x
    a(10)

Result then needs to be 10 10 10.

Then is taken care of if 'a(10)' is part of a replacement token list 
being substituted then rescanned for macros.

But 'a(10)' can also be part of normal code, not inside a macro 
definition. Then the 'b' that is generated is in a different 
'token-space' from the "(10)" in the rest of the file (and likely to 
still exist as characters not tokens). Rescanning an entirely source 
file is hopelessly inefficient just for the off-chance someone might be 
using such macros.

That's going to mean some very untidy logic.

-- 
Bartc

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


Thread

Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 18:35 +0000
  Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-01-07 11:23 -0800
    Re: Macro Expansion Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-07 21:28 +0000
  Re: Macro Expansion Siri Cruise <chine.bleu@yahoo.com> - 2017-01-07 11:45 -0800
    Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 20:16 +0000
      Re: Macro Expansion Siri Cruise <chine.bleu@yahoo.com> - 2017-01-07 12:23 -0800
        Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 20:31 +0000
          Re: Macro Expansion Siri Cruise <chine.bleu@yahoo.com> - 2017-01-07 12:42 -0800
          Re: Macro Expansion Ian Collins <ian-news@hotmail.com> - 2017-01-08 14:42 +1300
            Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 13:18 +0000
  Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 20:15 +0000
    Re: Macro Expansion Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-07 20:42 +0000
      Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 22:50 +0000
        Re: Macro Expansion Ian Collins <ian-news@hotmail.com> - 2017-01-08 11:59 +1300
          Re: Macro Expansion Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-07 15:10 -0800
        Re: Macro Expansion supercat@casperkitty.com - 2017-01-07 17:24 -0800
          Re: Macro Expansion Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-15 21:55 -0800
            Re: Macro Expansion supercat@casperkitty.com - 2017-01-16 09:06 -0800
              Re: Macro Expansion Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-31 08:51 -0800
                Re: Macro Expansion supercat@casperkitty.com - 2017-01-31 13:06 -0800
                Re: Macro Expansion Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-03 07:49 -0800
                Re: Macro Expansion supercat@casperkitty.com - 2017-02-03 12:03 -0800
                Re: Macro Expansion Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-09 09:00 -0800
        Re: Macro Expansion Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-08 01:37 +0000
          Re: Macro Expansion Jean-Marc Bourguet <jm@bourguet.org> - 2017-01-08 10:22 +0100
  Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-01-07 12:18 -0800
    Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 20:28 +0000
      Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-01-07 12:36 -0800
        Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-07 22:59 +0000
  Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-01-08 00:20 -0800
    Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 13:30 +0000
      Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-10 14:00 +0000
        Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-01-10 07:43 -0800
          Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-10 17:47 +0000
            Re: Macro Expansion Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-10 22:49 +0000
              Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-10 23:28 +0000
              Re: Macro Expansion "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-10 18:51 -0500
                Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-11 00:06 +0000
          Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-10 20:30 +0000
            Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-04-26 10:04 -0700
              Re: Macro Expansion Keith Thompson <kst-u@mib.org> - 2017-04-26 12:00 -0700
                Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-04-26 12:24 -0700
              Re: Macro Expansion bartc <bc@freeuk.com> - 2017-04-26 20:12 +0100
                Re: Macro Expansion Thiago Adams <thiago.adams@gmail.com> - 2017-04-26 12:34 -0700
                Re: Macro Expansion jameskuyper@verizon.net - 2017-04-26 13:46 -0700
  Re: Macro Expansion Jean-Marc Bourguet <jm@bourguet.org> - 2017-01-08 10:13 +0100
    Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 13:10 +0000
      Re: Macro Expansion Jean-Marc Bourguet <jm@bourguet.org> - 2017-01-08 15:51 +0100
        Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 17:17 +0000
          Re: Macro Expansion supercat@casperkitty.com - 2017-01-08 11:04 -0800
            Re: Macro Expansion Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-08 11:10 -0800
              Re: Macro Expansion supercat@casperkitty.com - 2017-01-08 14:08 -0800
            Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 19:49 +0000
              Re: Macro Expansion supercat@casperkitty.com - 2017-01-08 14:17 -0800
          Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 19:19 +0000
          Re: Macro Expansion Jean-Marc Bourguet <jm@bourguet.org> - 2017-01-08 21:43 +0100
      Re: Macro Expansion supercat@casperkitty.com - 2017-01-08 10:43 -0800
      Re: Macro Expansion Keith Thompson <kst-u@mib.org> - 2017-01-08 12:39 -0800
  Re: Macro Expansion antispam@math.uni.wroc.pl - 2017-01-08 22:54 +0000
    Re: Macro Expansion "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-08 18:36 -0500
      Re: Macro Expansion antispam@math.uni.wroc.pl - 2017-01-09 01:15 +0000
        Re: Macro Expansion "James R. Kuyper" <jameskuyper@verizon.net> - 2017-01-08 20:49 -0500
    Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-08 23:53 +0000
      Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-09 01:11 +0000
      Re: Macro Expansion antispam@math.uni.wroc.pl - 2017-01-09 01:31 +0000
        Re: Macro Expansion BartC <bc@freeuk.com> - 2017-01-10 11:28 +0000

csiph-web