例子46-1:函數
#include "stdio.h" #define RESET(p, len) \ while(len > 0 ) \ (char*p)[--len] = 0 void reset(void*p, int len) { while(len > 0) ((char*)p)[--len] = 0; } int main() { int array_1[] ={1,2,3,4,5}; int len = sizeof(array_1); int i = 0; reset(array_1,len); for(i = 0;i < 5;i ++) { printf("array[%d] = %d\n",i ,array_1[i]); } return 0 ; }
輸出結果:code
array[0] = 0 array[1] = 0 array[2] = 0 array[3] = 0 array[4] = 0
例子46-2:遞歸
#include "stdio.h" #define ADD(a,b) a+b #define MUL(a,b) a*b #define MIN(a,b) ((a)<(b)?(a):(b)) int main() { int i = 1; int j = 10; printf("%d\n",MUL(ADD(1,2),ADD(3,4))); //直接文本替換 1+2*3+4 = 11 printf("%d\n",MIN(i++,j)); return 0; }
輸出結果: 11 2