C++中的宏可以提高性能吗?

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)

由于副本不会影响(甚至使情况更糟)性能,请参阅此问题以获取更多详细信息.