如果有人问起了inline的作用

· · 个人记录

或许这张图会是最好的例子:

注意上面的对队列中的小函数以及读入优化进行了强制inline优化,于是得到的结果:-->-->(如上图)

然而注意不是所有时候inline都是出色的

例如一个大函数、递归函数、带指针的函数etc,编译器默认不会优化

然而像min,max,upmax,upmin,get_char等那么就在允许的情况下强制inline

代码如下:

define Finline __inline__ __attribute__ ((always_inline))

然后get_char这么写:

Finline char get_char(){
    static char buf[5000000], *p1 = buf, *p2 = buf + fread(buf, 1, 5000000, stdin);
    return p1 == p2 ? EOF : *p1 ++;
}
如果不放心还可以把static...部分提出来