Explanation, please!
    Jeff Siegal 
    jbs at fenchurch.MIT.EDU
       
    Fri Aug 26 22:53:49 AEST 1988
    
    
  
In article <2873 at ttrdc.UUCP> levy at ttrdc.UUCP (Daniel R. Levy) writes:
>>[Duff's device loop example from C++ book]
>
>Question:  what if count==0?
The program breaks.  I prefer (and also use, in highly-speed-sensitive
code):
#define duff16(counter, block) \
  switch (counter & 0x0f) { \
   do \
   { \
     counter -= 16; \
     { block; } \
     case 15:	{ block; } \
     case 14:	{ block; } \
     case 13:	{ block; } \
     case 12:	{ block; } \
     case 11:	{ block; } \
     case 10:	{ block; } \
     case 9:	{ block; } \
     case 8:	{ block; } \
     case 7:	{ block; } \
     case 6:	{ block; } \
     case 5:	{ block; } \
     case 4:	{ block; } \
     case 3:	{ block; } \
     case 2:	{ block; } \
     case 1:	{ block; } \
     case 0:    /* null statement */; \
   } while (counter >= 16); \
  }
  duff16(n, *to++ = *from++)
Jeff Siegal
    
    
More information about the Comp.lang.c
mailing list