Unnecessary Macros (was Re: Unnecessary Parenthesis)
    T. William Wells 
    bill at proxftl.UUCP
       
    Fri Sep 30 01:29:23 AEST 1988
    
    
  
In article <1851 at loral.UUCP> jlh at loral.UUCP (Physically Phffft) writes:
: [A long section explaining a bug easily caused by temps used in macros]
:
: The moral?  Well, if you have to use a temp variable in a macro then
: PASS the bloody thing.
:
: #define power(x,y, tmp) (tmp = x*x + y*y, x = tmp)
:
: result = power(x, y, temp);
:
: This ensures that the poor overworked sucker who ends up maintaining your
: code knows damn well that your macro requires a temp variable to work right.
We have a coding standard that makes globals always distinct from
locals: globals *always* start with a capital letter; locals,
never.  Given this, we can handle this problem with
int     Square_temp;             /* Macro only works for ints, oh well. */
#define square(x) (Square_temp = (x), Square_temp * Square_temp)
I would never do this (not without a compelling reason, anyway),
but should someone do so here, at least they'd not get bitten by
the local-global problem.
---
Bill
You can still reach me at proxftl!bill
But I'd rather you send to proxftl!twwells!bill
    
    
More information about the Comp.lang.c
mailing list