示例1
#define ADD(N) \
static void add_##N##_t(int##N##_t a,int##N##_t b,int##N##_t *c) \
{ *c=a+b;}
ADD(8)
ADD(16)
ADD(32)
int main(void)
{
int16_t a,b,c=0;
a=100;b=200;
add_16_t(a,b,&c);
printf("c=%d\n",c);
}
运行结果:c=300;可以尝试调用add_8_t(a,b,&c);
示例2
#define _Max(T) Max$_##T##_$
#define Max(T) _Max(T)
#define _Max_IMPL(T) \
T Max(T)(T a, T b) \
{ return a > b ? a : b; }
#define Max_IMPL(T) _Max_IMPL(T)
Max_IMPL(int);
Max_IMPL(char);
Max_IMPL(double);
int main(void)
{
printf("%d, %c, %lf\n", Max(int)(123, 456), Max(char)('a', 'z'), Max(double)(1.1, 2.2));
return 0;
}
运行结果:456, z, 2.200000
有个$可以迷惑大家,其实不加也没影响
3万+

被折叠的 条评论
为什么被折叠?



