ggl*_*uta 3 c c++ macros preprocessor inline
我是C++的初学者,我只是通过在需要时替换文本来阅读宏.在这种情况下,这是否意味着它使.exe运行得更快?这与内联函数有什么不同?
例如,如果我有以下宏:
#define SQUARE(x) ((x) * (x))
Run Code Online (Sandbox Code Playgroud)
正常功能:
int Square(const int& x)
{
return x*x;
}
Run Code Online (Sandbox Code Playgroud)
和内联函数:
inline int Square(const int& x)
{
return x*x;
}
Run Code Online (Sandbox Code Playgroud)
这三者之间的主要区别是什么,特别是内联函数和宏之间有什么区别?谢谢.
vso*_*tco 12
如果可能,您应该避免使用宏.内联函数始终是更好的选择,因为它们是类型安全的.内联函数应该与宏一样快(如果它确实由编译器内联;请注意,inline关键字不是绑定,而只是对编译器的提示,如果无法进行内联,则可能会忽略它).
PS:作为一种风格问题,避免使用基本的const Type&参数类型,如或.只需使用类型本身,换句话说,使用intdouble
int Square(int x)
Run Code Online (Sandbox Code Playgroud)
由于副本不会影响(甚至使情况更糟)性能,请参阅此问题以获取更多详细信息.