第一部分:宏
为什么要使用宏呢?
因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和...
分类:
其他好文 时间:
2014-12-18 22:27:14
阅读次数:
212
1.内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度。
2.Java语言中有一个关键字final来指明那个函数是内联的,例:
public final void doSomething() {
// to do something
}
该方法在被调用时,会在调用处直接展开...
分类:
编程语言 时间:
2014-12-15 19:06:00
阅读次数:
172
可变参宏: 1 #include 2 #include 3 4 #define MYPRINT(...) printf(__VA_ARGS__) 5 6 int main(int argc, char **argv) 7 { 8 MYPRINT("%d,%s", 10, "hello...
分类:
其他好文 时间:
2014-12-09 22:50:39
阅读次数:
531
以前用过C++,知道它里面有一个内联函数这个概念,一般情况用inline关键字修饰,在C++定义类时,那种写中Class定义里面的函数,也被编译器当做内联函数处理。
说了这么多,还没说什么是内联函数。所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度。
现在该...
分类:
编程语言 时间:
2014-12-02 16:38:11
阅读次数:
229
//C++函数
//内联函数
//内联函数的作用: 程序无需跳到另一个位置处执行代码,再跳回来
//内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存
//声明内联函数的措施:在函数声明 和 定义前加上关键字inline
inline double square(double x);//申明内联函数
inline double square(double x){...
分类:
编程语言 时间:
2014-11-30 07:09:24
阅读次数:
227
C语言使用“静态绑定”,也就是说,在编译期就能决定运行时所应调用的函数(也就是说函数地址硬编码在指令之中)。如果是内联函数,就无法硬编码在指令之中,而是要在运行期读取出来(也就是动态绑定)。在底层,所有方法都是普通的C函数。OC对象的每个方法都可以视为简单的C函数。 Class_selector(i...
分类:
其他好文 时间:
2014-11-27 20:25:27
阅读次数:
226
在C&C++中一、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))取代这种形式的原因如下:1. C中...
分类:
其他好文 时间:
2014-11-21 01:19:51
阅读次数:
161
/* 第一篇 预备知识 第1章 C++编程技术 1.1 类和对象 1.2 类的继承 1.3 函数重载 1.4 访问控制 1.5 操作符重载 1.6 显式类型转换 1.7 异常处理 1.8 名字空间 1.9 友员函数 1.10 内联函数 1.11 静态成...
分类:
编程语言 时间:
2014-11-19 15:41:29
阅读次数:
291
Block(代码段)封装了一段代码,可以在任何时候执行。Block可以作为函数参数或者函数返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:block是inline(内联函数)的,并且默认情况下它对局部变量是只读的。苹果官方建议尽量多用block.在多线程、异步任务、集合遍历、集合排序、动画转场用的很多。Block的定义:int (^MySum) (int, int)...
分类:
其他好文 时间:
2014-11-17 22:52:23
阅读次数:
265
在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造....
分类:
其他好文 时间:
2014-11-06 12:46:19
阅读次数:
264