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


Groups > comp.lang.c > #11834

Re: Multi-instructions macro and compiler warning

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: Multi-instructions macro and compiler warning
Date 2011-10-17 12:30 -0700
Organization None to speak of
Message-ID <lnmxczpga3.fsf@nuthaus.mib.org> (permalink)
References (2 earlier) <j7e1qm$7te$1@nnrp.ngi.it> <9fvgkdF3u9U3@mid.individual.net> <j7e3tk$9v2$1@nnrp.ngi.it> <9fvoqnF3u9U5@mid.individual.net> <bc5ef864-1b35-4ea4-a57f-d3a2529493fa@f11g2000vbm.googlegroups.com>

Show all headers | View raw


pozz <pozzugno@gmail.com> writes:
[...]
> Suppose I have a macro that activate a relay connected to a
> microcontroller pin:
>
>   #define RELAY_ON()  do {PIN_SET_OUTPUT(10); PIN_SET(PIN(10));}
> while(0)
[...]

Are PIN_SET_OUTPUT and PIN_SET functions or macros?

If they're functions, or if they're macros whose invocations expand to
valid expressions, then you can just do this:

    #define RELAY_ON() ( PIN_SET_OUTPUT(10), PIN_SET(PIN(10)) )

There's no need for the "do { ... } while (0)" trick unless you
need to use control-flow constructs (if, for, while) -- and "if"
can often be replaced with "?:".  Just about anything that doesn't
require looping can be made into an expression.

This assumes you really need to make it a macro.  If you're able
to make it a function (inline or not), then of course you can use
any control-flow you like.

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

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


Thread

Multi-instructions macro and compiler warning pozz <pozzugno@gmail.com> - 2011-10-16 09:09 +0200
  Re: Multi-instructions macro and compiler warning Ian Collins <ian-news@hotmail.com> - 2011-10-16 20:31 +1300
    Re: Multi-instructions macro and compiler warning pozz <pozzugno@gmail.com> - 2011-10-16 09:41 +0200
      Re: Multi-instructions macro and compiler warning Ian Collins <ian-news@hotmail.com> - 2011-10-16 20:49 +1300
        Re: Multi-instructions macro and compiler warning pozz <pozzugno@gmail.com> - 2011-10-16 10:16 +0200
          Re: Multi-instructions macro and compiler warning Ian Collins <ian-news@hotmail.com> - 2011-10-16 23:09 +1300
            Re: Multi-instructions macro and compiler warning pozz <pozzugno@gmail.com> - 2011-10-17 02:37 -0700
              Re: Multi-instructions macro and compiler warning Ian Collins <ian-news@hotmail.com> - 2011-10-17 23:04 +1300
              Re: Multi-instructions macro and compiler warning Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-10-17 11:06 +0100
                Re: Multi-instructions macro and compiler warning pozz <pozzugno@gmail.com> - 2011-10-17 03:23 -0700
              Re: Multi-instructions macro and compiler warning Keith Thompson <kst-u@mib.org> - 2011-10-17 12:30 -0700
      Re: Multi-instructions macro and compiler warning "BartC" <bc@freeuk.com> - 2011-10-16 12:47 +0100
        Re: Multi-instructions macro and compiler warning Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-10-16 22:16 +0000
        Re: Multi-instructions macro and compiler warning pozz <pozzugno@gmail.com> - 2011-10-17 02:42 -0700
          Re: Multi-instructions macro and compiler warning "BartC" <bc@freeuk.com> - 2011-10-17 13:10 +0100
      Re: Multi-instructions macro and compiler warning bert <bert.hutchings@btinternet.com> - 2011-10-16 05:33 -0700
  Re: Multi-instructions macro and compiler warning Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-10-16 09:02 -0400
  Re: Multi-instructions macro and compiler warning "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2011-10-16 07:40 -0700
    Re: Multi-instructions macro and compiler warning ImpalerCore <jadill33@gmail.com> - 2011-10-17 08:07 -0700
      Re: Multi-instructions macro and compiler warning "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2011-10-17 09:25 -0700
        Re: Multi-instructions macro and compiler warning James Kuyper <jameskuyper@verizon.net> - 2011-10-17 12:58 -0400
          Re: Multi-instructions macro and compiler warning Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-10-18 07:43 -0400
            Re: Multi-instructions macro and compiler warning Keith Thompson <kst-u@mib.org> - 2011-10-18 11:52 -0700
        Re: Multi-instructions macro and compiler warning ImpalerCore <jadill33@gmail.com> - 2011-10-17 10:41 -0700
  Re: Multi-instructions macro and compiler warning Jean-Christophe <5.d@free.fr> - 2011-10-16 10:02 -0700
    Re: Multi-instructions macro and compiler warning Kleuskes & Moos <kleuske@somewhere.else.net> - 2011-10-16 17:44 +0000
    Re: Multi-instructions macro and compiler warning Keith Thompson <kst-u@mib.org> - 2011-10-16 13:49 -0700
      Re: Multi-instructions macro and compiler warning Ian Collins <ian-news@hotmail.com> - 2011-10-17 10:00 +1300
  Re: Multi-instructions macro and compiler warning Kenneth Brody <kenbrody@spamcop.net> - 2011-10-17 12:50 -0400
    Re: Multi-instructions macro and compiler warning "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-10-17 14:50 -0400

csiph-web