可能重复: 内联函数与预处理宏
你好,有人能解释一下它到底是什么意思吗?和普通宏有什么区别(我知道它在编译时工作,而不是预处理,但又怎样?)提前感谢你的帮助,在谷歌上找了一下,但没有找到可以理解的东西。
发布于 2010-09-16 13:37:51
(假设这里是指C/C++。)
内联函数将其代码复制到调用它的点,就像宏一样。
使用内联函数而不是宏来实现这一点的主要原因是宏语言比实际的C/C++代码弱得多;编写可理解的、可重用的、无big的宏要困难得多。宏不会创建词法作用域,因此一个宏中的变量可以与已经在其使用范围内的变量发生冲突。它不打-检查它的论点。它很容易引入意想不到的语法错误,因为所有宏所做的基本上是搜索和替换。
此外,IIRC,编译器可以选择忽略一个内联指令,如果它认为这是愚蠢的;它不能用一个宏。
或者,用一种更加固执己见和简短的方式重新表述这一点:宏(在C/C++中,而不是,比如说Lisp方言中)是一种可怕的杂念,内联函数允许您不使用它们。
另外,请记住,将函数标记为内联通常不是一个好主意。编译器通常会以他们认为合适的方式内联或不内联;通过在内联中标记一个函数,您将接管一个低级函数的责任,而在大多数情况下,编译器将比您更了解这个函数。
发布于 2010-09-16 13:40:03
宏和内联函数有很大的区别
C++中的一般规则是,只要可能,就应该避免宏。
https://stackoverflow.com/questions/3727095
复制相似问题