Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!ut-sally!husc6!mit-eddie!ll-xn!ames!amdcad!amd!intelca!oliveb!pyramid!prls!philabs!micomvax!musocs!mcgill-vision!mouse From: mouse@mcgill-vision.UUCP (der Mouse) Newsgroups: comp.lang.c Subject: Re: Style question re common C expression. Message-ID: <829@mcgill-vision.UUCP> Date: Fri, 26-Jun-87 22:50:09 EDT Article-I.D.: mcgill-v.829 Posted: Fri Jun 26 22:50:09 1987 Date-Received: Sat, 4-Jul-87 23:07:53 EDT References: <4934@utcsri.UUCP> <8164@utzoo.UUCP> Organization: McGill University, Montreal Lines: 23 In article <8164@utzoo.UUCP>, henry@utzoo.UUCP (Henry Spencer) writes: >> ... like the standard "#define STREQ(s,t)(strcmp(s,t) == 0)"? > [Second,] if you don't indulge in the perversion of routinely using > side effects within expressions, then a still better form is: > #define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0) Perversion? You mean, as in docommand(cmd) register char *cmd; { register char **cmdptr; cmdptr = commands; /* vvvvvvvvv */ while ((cmdptr < commands+NCOMMANDS) && !STREQ(cmd,*cmdptr++)) ; (*cmdfxns[cmdptr-commands])(cmd); /* assumes extra entry for bad cmd */ } der Mouse (mouse@mcgill-vision.uucp)