๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #4745

Re: Are macros expanded within unused macro arguments?

#4745
From: Thomas Wolf
Date: Fri, 02 Feb 1996 08:36
52 lines
2472 bytes
In article <4es8rp$98n@usenet.pa.dec.com>, diamond@tko.dec.com (Norman Diamond) writes:
:> In article <TANMOY.96Feb1102025@qcd.lanl.gov>, tanmoy@qcd.lanl.gov (Tanmoy Bhattacharya) writes:
:> >In article <DM3MC3.Atv@scr.siemens.com> mlg@scr.siemens.com (Michael
:> >Greenberg) writes: 
:> >>Is the following program legal?
:> >>#define foo(unused)
:> >>#define bar(x,y)
:> >>foo(bar(1))
:> 
:> >I read it as being legal.
:> 
:> Mr. Bhattacharya, I am shocked.
:>
[Snip]

Mr. Diamond, why are you shocked? Macro 'bar' is not invoked. Read 6.8.3.1
again: we do

   - identify the parameters
   
     Ok, 'foo' has one parameter, "bar(1)".
     
   - replace occurrences of the formal parameter ('unused') in the
     replacement list by the corresponding argument after macro re-
     placement within this argument.
     
     Well, 'foo's replacement list is empty, so this never happens.
     In other words, since there's no 'unused' in the replacement
     list, we'll never try to substitute it by the argument "bar(1)",
     thus we'll never try to perform macro replacement on "bar(1)"
     and therefore 'bar' is not invoked.
     
Your quote from 6.8.3 (3.8.3. in ANSI Classic) does not apply:
     
:>       lines 14 to 15:  "The number of arguments in an INVOCATION of a
:>       function-like macro shall agree with the number of parameters in
:>       the macro definition, and [...]"

(Emphasis added, TW)

Above quote applies only to *invocations*, but since 'bar' is not invoked,
it's irrelevant in this example.

Regards,

  Thomas
----------------------------------------------------------------------
Swiss Federal Institute of Technology | Thomas Wolf
Software Engineering Laboratory       | EPFL-DI-LGL
Thomas Wolf (TW)                      | CH-1015 Lausanne (Suisse)
E-Mail: wolf@di.epfl.ch               | Phone: (++41 21)693 42 37
---------------------------------------------------------------------- 
Technical Details
Message-ID: <4esiem$bbr@info.epfl.ch>
Path: arc1-ca.pugleaf.net!swidir.switch.ch!epflnews!Thomas.Wolf
References: <DM3MC3.Atv@scr.siemens.com> <TANMOY.96Feb1102025@qcd.lanl.gov> <4es8rp$98n@usenet.pa.dec.com>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!swidir.switch.ch!epflnews!Thomas.Wolf
From: Thomas.Wolf@di.epfl.ch (Thomas Wolf)
Newsgroups: comp.std.c
Subject: Re: Are macros expanded within unused macro arguments?
Date: 2 Feb 1996 08:36:38 GMT
Organization: Ecole Polytechnique Fรฉdรฉrale de Lausanne
Sender: wolf@lglsun5.epfl.ch (Thomas Wolf)
Message-ID: <4esiem$bbr@info.epfl.ch>
References: <DM3MC3.Atv@scr.siemens.com> <TANMOY.96Feb1102025@qcd.lanl.gov> <4es8rp$98n@usenet.pa.dec.com>
NNTP-Posting-Host: lglsun5.epfl.ch