Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!philabs!prls!pyramid!hplabs!sdcrdcf!markb From: markb@sdcrdcf.UUCP (Mark Biggar) Newsgroups: net.lang.c Subject: Re: swap() macro Message-ID: <2857@sdcrdcf.UUCP> Date: Tue, 24-Jun-86 17:02:06 EDT Article-I.D.: sdcrdcf.2857 Posted: Tue Jun 24 17:02:06 1986 Date-Received: Fri, 27-Jun-86 04:39:44 EDT References: <1201@brl-smoke.ARPA> <3007@utcsri.UUCP> Reply-To: markb@sdcrdcf.UUCP (Mark Biggar) Organization: System Development Corporation R&D, Santa Monica Lines: 24 In article <3007@utcsri.UUCP> greg@utcsri.UUCP (Gregory Smith) writes: >In article <1201@brl-smoke.ARPA> Schauble@MIT-MULTICS.ARPA (Paul Schauble) writes: >>Can someone construct a version that makes >> >> int *a, *b; >> swap (*a++,*b++); >> >>work right? >> >#define swap( a,b ) { int *p1,*p2,t;\ > p1= &(a); p2= &(b); t= *p1;*p1= *p2;*p2=t;} > >No, it isn't pretty. >how about: > >#define swap(a,b) fswap(&(a),&(b)) >fswap(a,b) int *a,*b; >{ etc. BOTH of these die a horrible death if either argument is declared "register". Mark Biggar {allegra,burdvax,cbosgd,hplabs,ihnp4,akgua,sdcsvax}!sdcrdcf!markb