C语言粘滞符 #/## 的使用记录
1、自动生成不同的函数,并进行声明
#include <stdio.h>
#include <stdlib.h>
#define HMAX(cname) \
static int cname##_max(int a,int b) \
{ \
return a > b ? a : b; \
}
HMAX(int)
int main(){
int_max(1,2);
return 0;
}
2、将内容转为字符串
#include <stdio.h>
#include <stdlib.h>
#define STR(data) #data
int main(){
printf("%s",STR(1+2));
return 0;
}
3、连续粘滞符
#include <stdio.h>
#include <stdlib.h>
#define sumn(cname,type) \
static type cname##_##type##_sumn(type a,type b) \
{ \
tepeof(a) sum = (typeof(a))0; \
if( a < b ) return (typeof(a))0; \
for( ; a < b ; a++ ) \
{ \
sum += a; \
} \
return sum;
}
sumn(add,int)
sumn(add,double)
int main(){
int i_r = 0 ;
double d_r = 0.0;
i_r = add_int_sumn(1,2);
d_r = add_double_sumn(1.0,2.0);
printf(" %d %lf\n" , i_r , d_r );
return 0;
}