关键区别–宏与内联函数
宏是一段代码,它是预处理器指令。内联函数是C++增强功能,以最小化程序的执行时间。因此,宏和内联函数的关键区别在于,宏由预处理器检查,而内联函数由编译器检查。
宏包含在程序的开头,前面有一个哈希符号。当程序中有宏名称时,它将被宏的内容替换。
目录
1. 概述和主要区别
2. 什么是宏
3. 什么是内联函数
4. 并排比较-表格形式的宏与内联函数
5. 摘要
什么是宏(macro)?
预处理器是在源代码通过编译器之前对其进行处理的程序。它使用预处理器命令行或指令进行操作。在程序中,预处理器指令放在主程序之前的源程序中。在源代码通过编译器之前,它由预处理器检查预处理器指令。预处理器指令具有#符号。与其他语句不同,它们不以分号结尾。预处理器指令的一种类型是宏。一般来说,宏是用大写字母写的。
根据上面的程序,第3行和第4行表示宏。计算面积时,使用定义的宏替换PI值。在第14行volume=CUBE(value)中,预处理器将语句展开为volume=(value*value*value)。找到立方体可以写成函数,但在这里它是用宏写的。如果有一个语句volume=CUBE(x+y),那么它将扩展为volume=(x+y*x+y*x+y)。
一些编程标记很容易键入错误。可以使用宏替换它们。e、 g.#定义和&,#定义或| |。宏定义还可以包含表达式,例如#define AREA 4*5.56。
什么是内联函数(inline function)?
当一个函数被调用时,编译器需要一些时间来执行它。如果函数不是很复杂,程序员可以将函数转换为内联函数。参考以下程序。
print_hello是一个简单的函数。它在调用函数时打印字符串“Hello”。该函数的执行时间为0.187s,使用inline关键字如下,执行时间减少到0.064s。
因此,通过使用inline关键字,可以减少执行时间。如果存在循环、switch语句以及函数包含静态变量或递归函数,则内联函数可能无法工作。
宏(macro)和内联函数(inline function)的区别
宏与内联函数 | |
宏是一段代码,它是一个预处理器指令,包含在程序的开头,前面有一个哈希符号。 | 内联函数是C++增强功能,以最小化程序的执行时间。 |
评估时间 | |
在宏中,每次在程序中使用参数时都会对其求值。 | 在inline中,参数被计算一次。 |
审核人 | |
预处理器检查宏。 | 编译器检查内联函数。 |
关键字 | |
马可用“定义”。 | inline函数使用关键字“inline”。 |
使用 | |
宏可用于定义常量、表达式、文本替换和函数定义等。 | 内联函数可用于最小化程序的执行时间。 |
终止 | |
宏以新行结束。 | 内联函数以内联函数结尾处的大括号结束。 |
定义点 | |
在程序开始时定义一个Marco。 | 内联函数可以在类的内部或外部。 |
总结 - 宏(macro) vs. 内联函数(inline function)
本文讨论了宏和内联函数之间的区别。C++编程中使用了这些概念。宏和内联函数的区别在于,宏由预处理器检查,而内联函数由编译器检查。