在JAVA和CPP这种OOP语言中,都有泛型类,在C语言可以用宏定义实现泛型函数。
main.c
1 #include <stdio.h> 2 #define min(x, y) ({ 3 typeof(x) _min1 = (x); 4 typeof(y) _min2 = (y); 5 (void) (&_min1 == &_min2); 6 _min1 < _min2 ? _min1 : _min2;}) 7 8 int main(int argc, char **argv) { 9 int a = 5; 10 int b = 8; 11 int c; 12 double d = 11.1; 13 double e =9.9; 14 double f; 15 c = min(a, b); 16 f = min(d, e); 17 printf("the int min is %d\n",c); 18 printf("the double min is %f\n",f); 19 return 0; 20 }
Line 3:typeof(x)表示获取x的类型。
Line 5:(void) (&_min1 == &_min2);在编译提示。
若不同类型指针做逻辑比较在编译过程会提示:warning: comparison of distinct pointer types lacks a cast
参考资料:《Android驱动开发与移植实战详解》
时间: 2024-11-08 21:30:25