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


Groups > comp.lang.c > #110083

Re: C Macros Badly Defined?

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: C Macros Badly Defined?
Date 2017-05-15 22:08 +0100
Organization A noiseless patient Spider
Message-ID <877f1h7rpy.fsf@bsb.me.uk> (permalink)
References (2 earlier) <LoiSA.2257$mW1.923@fx06.am4> <87tw4m6sbd.fsf@bsb.me.uk> <sBlSA.677$C56.650@fx34.am4> <87inl26j81.fsf@bsb.me.uk> <umnSA.11298$mW1.11029@fx06.am4>

Show all headers | View raw


bartc <bc@freeuk.com> writes:

> On 15/05/2017 19:57, Ben Bacarisse wrote:
>> bartc <bc@freeuk.com> writes:
>
>>> then I get yet another assorted bunch of results. More bugs
>>> presumably.
>>
>> I doubt there will be any fewer that's almost certain.  But with no idea
>> what flags you are using, none of these may be bugs.
>
> I just don't think that flags have much to do with it. Except for
> perhaps for gcc (and clang which uses the same flags), where
> apparently they can be used to make gcc do anything.

I really don't know why you can't just tell us.  Your remark about it
not mattering suggest that you are using no flags at all (save for -E)
for any of compilers you listed.  Is that correct?

> And if they do, then they shouldn't.

Nonsense.  It would be entirely reasonable for a compiler to support
some legacy behaviour in either its default mode or with some special
flags.

<snip>
>> No, you are not allowed pp directives in the middle of a macro call[1]
>> but I don't see the connection with #12.  #12 relies on the fact the the
>> replacement list is scanned alone with the remaining tokens:
>>
>> #define A(x,y) if(x==y)
>> #define B A(
>>
>> so "B 1,2)" expands to "A(| 1,2)" (using | to mark where the replacement
>> list ends).  This replacement list is scanned along with the remaining
>> tokens, so a valid call of A is seen.
>>
>> [1] 6.10.3 p11:
>>
>>   "The sequence of preprocessing tokens bounded by the outside-most
>>   matching parentheses forms the list of arguments for the function-like
>>   macro. The individual arguments within the list are separated by comma
>>   preprocessing tokens, but comma preprocessing tokens between matching
>>   inner parentheses do not separate arguments. If there are sequences of
>>   preprocessing tokens within the list of arguments that would otherwise
>>   act as preprocessing directives, the behavior is undefined."
>>
>
> If it's so perfectly clear, why do so many compilers have trouble?

That's rhetoric.  Instead, can you say what you think is unclear about

#define A(x,y) if(x==y)
#define B A(
B 10,20)

?  It's entirely possible that the erroneous results you report are not
due to misunderstanding but are the consequences of incorrect fixes
elsewhere.  Or they may simply be due to incorrect implementation
(i.e. despite understanding the words in the standard).

But I found lccwin64 and PellesC (8.0) get example 12 right.

Using no flags and

  Pelles Compiler Driver, Version 8.00.0
  Copyright (c) Pelle Orinius 2002-2015

Logiciels/Informatique lcc-win (64 bits) version 4.1.
Compilation date: Oct 27 2016 16:34:50

but even a very old version of lccwin32 gets 12 right.

-- 
Ben.

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


Thread

C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 11:46 +0100
  Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-15 12:32 +0100
    Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-15 06:48 -0700
      Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-15 15:18 +0100
        Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-15 11:22 -0700
          Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-15 20:40 +0100
            Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-16 01:58 -0700
              Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-16 13:49 +0100
                Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-19 21:47 -0700
    Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 14:52 +0100
      Re: C Macros Badly Defined? Thiago Adams <thiago.adams@gmail.com> - 2017-05-15 07:11 -0700
        Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 15:29 +0100
      Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-15 16:41 +0100
        Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-15 08:53 -0700
          Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-24 08:16 -0700
            Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-24 10:43 -0700
              Re: C Macros Badly Defined? Ike Naar <ike@iceland.freeshell.org> - 2017-05-24 19:06 +0000
              Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-27 06:10 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-05-27 12:02 -0700
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-27 13:42 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-05-27 15:48 -0700
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-28 14:40 -0700
                Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-29 08:33 -0700
                Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-29 08:17 -0700
                Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-29 16:26 +0100
                Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-30 06:13 -0700
                Re: C Macros Badly Defined? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-05-30 09:57 -0700
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-30 19:12 +0200
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-05-30 14:55 -0700
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-30 15:39 -0700
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-30 16:03 -0700
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-30 16:50 -0700
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-30 17:12 -0700
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-31 06:30 -0700
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-31 09:36 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-05-31 12:08 -0700
                Re: C Macros Badly Defined? scott@slp53.sl.home (Scott Lurndal) - 2017-05-31 19:16 +0000
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-05-31 12:35 -0700
                Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-06-01 04:06 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-06-01 10:33 -0700
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-06-01 12:00 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-06-01 15:35 -0700
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-06-01 17:26 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-06-01 20:48 -0700
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-31 12:43 -0700
                Re: C Macros Badly Defined? David Kleinecke <dkleinecke@gmail.com> - 2017-05-31 21:50 -0700
                Re: C Macros Badly Defined? raltbos@xs4all.nl (Richard Bos) - 2017-06-03 11:36 +0000
                Re: C Macros Badly Defined? gazelle@shell.xmission.com (Kenny McCormack) - 2017-06-03 11:44 +0000
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-06-03 09:19 -0700
                Re: C Macros Badly Defined? gazelle@shell.xmission.com (Kenny McCormack) - 2017-06-03 16:22 +0000
                Re: Standards in various formats Noob <root@127.0.0.1> - 2017-06-01 13:24 +0200
                Re: C Macros Badly Defined? jadill33@gmail.com - 2017-05-31 13:02 -0700
                Re: C Macros Badly Defined? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-05-30 22:06 -0700
                Re: C Macros Badly Defined? David Brown <david.brown@hesbynett.no> - 2017-05-31 12:51 +0200
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-31 06:21 -0700
                Re: C Macros Badly Defined? David Brown <david.brown@hesbynett.no> - 2017-05-31 17:16 +0200
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-31 17:24 +0200
                Re: C Macros Badly Defined? "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-05-31 22:18 +0200
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-31 23:09 +0200
                Re: C Macros Badly Defined? Jerry Stuckle <jstucklex@attglobal.net> - 2017-05-31 17:32 -0400
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-05-31 23:50 +0200
                Re: C Macros Badly Defined? Jerry Stuckle <jstucklex@attglobal.net> - 2017-05-31 18:01 -0400
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 00:33 +0200
                Re: C Macros Badly Defined? Jerry Stuckle <jstucklex@attglobal.net> - 2017-05-31 22:36 -0400
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 06:08 +0200
                Re: C Macros Badly Defined? Jerry Stuckle <jstucklex@attglobal.net> - 2017-06-01 11:08 -0400
                Re: C Macros Badly Defined? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-06-01 01:30 -0700
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 11:38 +0200
                Re: C Macros Badly Defined? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-06-01 03:13 -0700
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 12:25 +0200
                Re: C Macros Badly Defined? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-06-01 04:48 -0700
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 14:27 +0200
                Re: C Macros Badly Defined? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-06-01 05:55 -0700
                Re: C Macros Badly Defined? Jerry Stuckle <jstucklex@attglobal.net> - 2017-06-01 11:11 -0400
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 17:40 +0200
                Re: C Macros Badly Defined? Ian Collins <ian-news@hotmail.com> - 2017-06-02 08:32 +1200
                Re: C Macros Badly Defined? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-01 23:14 +0200
                Re: C Macros Badly Defined? jameskuyper@verizon.net - 2017-06-01 14:41 -0700
                Re: C Macros Badly Defined? Ian Collins <ian-news@hotmail.com> - 2017-06-02 09:48 +1200
                Re: C Macros Badly Defined? David Brown <david.brown@hesbynett.no> - 2017-06-02 00:56 +0200
                Re: C Macros Badly Defined? Ian Collins <ian-news@hotmail.com> - 2017-06-02 11:12 +1200
                Re: C Macros Badly Defined? raltbos@xs4all.nl (Richard Bos) - 2017-06-03 11:54 +0000
                Re: C Macros Badly Defined? Leon Taylor <leontaylor476@gmail.com> - 2017-06-03 05:10 -0700
                Re: C Macros Badly Defined? David Brown <david.brown@hesbynett.no> - 2017-06-04 14:32 +0200
                Re: C Macros Badly Defined? Melzzzzz <Melzzzzz@zzzzz.com> - 2017-06-01 21:44 +0000
                Re: C Macros Badly Defined? raltbos@xs4all.nl (Richard Bos) - 2017-06-03 11:51 +0000
                Re: C Macros Badly Defined? gazelle@shell.xmission.com (Kenny McCormack) - 2017-06-01 21:38 +0000
                Re: C Macros Badly Defined? Ian Collins <ian-news@hotmail.com> - 2017-06-02 11:10 +1200
                Re: C Macros Badly Defined? gazelle@shell.xmission.com (Kenny McCormack) - 2017-06-01 23:34 +0000
                Re: C Macros Badly Defined? raltbos@xs4all.nl (Richard Bos) - 2017-06-03 11:48 +0000
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-06-01 08:56 -0700
                Re: C Macros Badly Defined? David Brown <david.brown@hesbynett.no> - 2017-06-02 14:11 +0200
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-06-02 10:02 -0700
                Re: C Macros Badly Defined? raltbos@xs4all.nl (Richard Bos) - 2017-06-03 11:45 +0000
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-31 09:11 -0700
                Re: C Macros Badly Defined? raltbos@xs4all.nl (Richard Bos) - 2017-06-03 11:29 +0000
        Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 18:31 +0100
          Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-15 11:56 -0700
          Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-15 19:57 +0100
            Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 20:31 +0100
              Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-15 22:08 +0100
                Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 23:50 +0100
                Re: C Macros Badly Defined? Keith Thompson <kst-u@mib.org> - 2017-05-15 16:13 -0700
                Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-16 01:36 +0100
                Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-16 10:15 +0100
                Re: C Macros Badly Defined? Philip Lantz <prl@canterey.us> - 2017-05-16 19:17 -0700
                Re: C Macros Badly Defined? Philip Lantz <prl@canterey.us> - 2017-05-16 19:12 -0700
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-17 08:48 -0700
                Re: C Macros Badly Defined? Robert Wessel <robertwessel2@yahoo.com> - 2017-05-17 11:19 -0500
                Re: C Macros Badly Defined? supercat@casperkitty.com - 2017-05-17 10:22 -0700
                Re: C Macros Badly Defined? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-05-18 04:17 +0200
                Re: C Macros Badly Defined? Philip Lantz <prl@canterey.us> - 2017-05-18 18:40 -0700
                Re: C Macros Badly Defined? Philip Lantz <prl@canterey.us> - 2017-05-18 18:36 -0700
            Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-16 10:57 +0100
              Re: C Macros Badly Defined? Thiago Adams <thiago.adams@gmail.com> - 2017-05-16 07:02 -0700
              Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-16 16:26 +0100
        Re: C Macros Badly Defined? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-05-18 03:27 +0200
          Re: C Macros Badly Defined? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-05-18 03:25 +0100
          Re: C Macros Badly Defined? James Kuyper <jameskuyper@verizon.net> - 2017-05-17 22:35 -0400
            Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-19 18:38 -0700
  Re: C Macros Badly Defined? Thiago Adams <thiago.adams@gmail.com> - 2017-05-15 06:00 -0700
    Re: C Macros Badly Defined? bartc <bc@freeuk.com> - 2017-05-15 15:05 +0100
    Re: C Macros Badly Defined? Thiago Adams <thiago.adams@gmail.com> - 2017-05-24 09:44 -0700
      Re: C Macros Badly Defined? Thiago Adams <thiago.adams@gmail.com> - 2017-05-26 17:26 -0700
  Re: C Macros Badly Defined? Tim Rentsch <txr@alumni.caltech.edu> - 2017-05-15 06:43 -0700
  Re: C Macros Badly Defined? fir <profesor.fir@gmail.com> - 2017-05-15 09:47 -0700

csiph-web