
libev
馒头2870
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c语言实现函数重载
借用gcc内置函数__builtin_choose_expr和__builtin_types_compatible_p可以帮助c来实现函数重载。 首先对这两个函数功能做下介绍 __builtin_choose_expr(expr,expr1,expr2)与c语言:?运算符有些类似,如果expr表达式为真,那么返回expr1,否则返回expr2 __builtin_types_compatible_p(type1,type2)测试type1与type2是否相同,如果相同返回真,否则返回假 代码 #includ原创 2020-07-29 20:05:59 · 2774 阅读 · 0 评论 -
libev中的gcc内嵌函数
在学习libev的过程中,遇到了大量的gcc内嵌函数,大多是为了提升性能而使用的,这里做一个汇总和介绍,持续更新 1、__builtin_expect:该函数是gcc引入的,为的是让程序员讲最有可能执行的分支告诉编译器,达到性能提升的效果 源码: //判断GNU版本号,如果不是gcc编译器,则不使用__builtin_expect函数 //否则如果主版本号大于major或者主版本号等于major但是次版本号大于minor则返回真 否则返回假 //__GNUC__ 、__GNUC_MINOR__ 、__GN原创 2020-07-29 22:01:18 · 214 阅读 · 0 评论 -
libev学习之突发奇想:c语言强取“派生类“的成员
c语言没有类的概念,更没有基类和派生类的概念,但我们可以通过一些手段来实现所谓的派生类 在学libev源码中,可以看到很多c语言实现的基类和派生类的概念。这里简化的实现了一下,并且通过基类的指针强行取到派生类的成员(但这种做法并不可取) #include <stdio.h> //这里定义基类的所有成员 #define BASE \ int a; struct base{ BASE }; struct extend{ BASE int b; }; typed原创 2020-07-29 21:18:20 · 130 阅读 · 0 评论