码迷,mamicode.com
首页 > 其他好文 > 详细

GCC泛型宏

时间:2016-06-14 13:53:54      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

在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驱动开发与移植实战详解》

GCC泛型宏

标签:

原文地址:http://www.cnblogs.com/kevinhwang/p/5583593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!