c++中define与inline的一些注意事项
2013-12-21 17:36
591 查看
宏不会被编译,因为在源码进入编译器之前,他会被预处理器去掉,因此尽量用const代替。
宏不是函数,只是在编译前预处理阶段将程序中有关字符串替换成宏体。因此要注意下列代码中的问题:
相比之下内联函数实现了宏的效率,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。
inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。inline可以作为类的成员函数,可以使用所在类的保护成员及私有成员。
内联函数和普通函数相比可以加快程序的运行速度,但它是以增加程序存储空间为代价的,由于不需要中断调用,在编译内联函数的时候内联函数可以直接被嵌入目标代码中。
内敛函数的缺点:
1)如果函数的代码较长,使用内联将消耗过多内存。
2)如果函数体内有循环,那么执行函数代码时间比调用开销大。
宏不是函数,只是在编译前预处理阶段将程序中有关字符串替换成宏体。因此要注意下列代码中的问题:
int a = 5, b = 0; max(++a, b);// a 的值增加了2次 max(++a, b+10); // a 的值只增加了1次
相比之下内联函数实现了宏的效率,但在编译中不单独产生代码,而是将有关代码嵌入到调用处。
inline max(int a,int b) { return a>b?a:b; }
inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。inline可以作为类的成员函数,可以使用所在类的保护成员及私有成员。
内联函数和普通函数相比可以加快程序的运行速度,但它是以增加程序存储空间为代价的,由于不需要中断调用,在编译内联函数的时候内联函数可以直接被嵌入目标代码中。
内敛函数的缺点:
1)如果函数的代码较长,使用内联将消耗过多内存。
2)如果函数体内有循环,那么执行函数代码时间比调用开销大。
相关文章推荐
- 关于c++的一些注意事项
- 关于c++的一些注意事项
- C++(MFC)编程一些注意事项
- C++ 关于MFC多线程编程中的一些注意事项 及自定义消息的处理
- C++中inline注意事项
- c++全局变量使用中的一些注意事项
- c++实现中的一些注意 事项
- C++ 友元函数/实际使用的一些注意事项/重复定义
- C++一些注意事项
- C/C++快速入门—刷题中的一些语法注意事项
- C++的一些注意事项
- C++中关于&的一些。int i 与 int &i 注意事项
- 关于在c#里加载c++ dll的一些注意事项
- c++表达式的一些小小的注意事项
- C++中关于cons和字符串t的一些注意事项
- 【东南大学】【仪器科学与工程学院】C++下第四次上机作业 单链表类模板 非书上版本 本人自创版本 部分参考书上 包含编程时一些该注意的事项
- C++ inline内联函数使用注意事项
- Google 广告的一些注意事项
- 异步FIFO设计的一些注意事项
- C++ 需要注意的一些问题