c语言宏和函数的区别 带参数宏定义和函数的区别?

带参数宏定义和函数的区别?1. 当编译器编译源代码时,宏将被简单地替换,没有任何逻辑检测,即简单的代码复制。2. 定义宏时不考虑参数类型。3. 参数宏的使用将使具有相同功能的代码块在目标文件中有多个副

带参数宏定义和函数的区别?

1. 当编译器编译源代码时,宏将被简单地替换,没有任何逻辑检测,即简单的代码复制。

2. 定义宏时不考虑参数类型。

3. 参数宏的使用将使具有相同功能的代码块在目标文件中有多个副本,这将增加目标文件的大小。

4. 参数宏的运行速度比函数快,因为不需要参数栈的压出操作。

5. 在定义参数宏时,应该更加小心,并添加更多的方括号。

6. 该函数只存在于目标文件中的一个位置,这样可以节省程序空间。

7. 函数的调用会涉及参数的传递,压栈/出栈操作比较慢。

8. 函数的参数有传递值和地址(指针)的问题,但参数宏不存在。

比较函数式宏定义和普通函数的区别?

不同。虽然函数是相似的,但是函数将生成独立的代码,并且每次调用都将在相同的位置执行代码,无论执行多少次。宏定义是简单的文本替换,生成的代码是程序替换后生成的代码。简而言之,每次宏被替换后在程序中使用时都会产生类似的代码,并且替换后产生的代码存在于程序的不同位置。宏定义不检查参数类型,它们只是替换文本