c - C中的宏和函数有什么区别?

标签 c function macros c-preprocessor

<分区>

C 中的宏和函数有什么区别?请告诉我一个可以使用宏和函数的应用程序?

最佳答案

基本区别在于函数是编译的,宏是预处理的。当你使用一个函数调用时,它会被翻译成 ASM CALL 和所有这些堆栈操作来传递参数和返回值。当您使用 MACRO 时,C 预处理器将使用宏翻译所有字符串,然后进行编译。

使用宏的缺点是它们隐藏了实现。如果有 bug,就更难找到了。

关于c - C中的宏和函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4990362/

相关文章:

c - 如何从名称与结构重合的 Swift 中调用 C 函数?

c++ - 从另一个函数引用函数

oracle - PLS-00103 : Encountered the symbol “end-of-file” when expecting one of the following: begin function pragma procedure

macros - 在guile方案中,如何防止从另一个宏调用宏时重命名?

C 宏 : Function factories, 为什么宏只在一种情况下不起作用?

c - 在 C 中调用函数之前的参数评估顺序

用于桌面和平板电脑开发的 Java 与 C 变体

c - 这段 C 代码可以编译吗?

c++ - 将成员函数分配给实例成员的属性

c++ - 修复 C++ 中的宏重新定义