foh*_*oho 4 c macros c-preprocessor
我可以'弄清楚使用的优点是什么
#define CRANDOM() (random() / 2.33);
Run Code Online (Sandbox Code Playgroud)
代替
float CRANDOM() {
return random() / 2.33;
}
Run Code Online (Sandbox Code Playgroud)
通过使用#define macro你强制宏的主体插入内联.
当使用功能会有1是一个函数调用(和为此跳转到函数的地址(除其他事项外)),这将一定程度上降低性能.
前者通常会更快,即使每次使用#defined宏时可执行文件的大小也会增加.
1 编译器可能足够智能以优化函数调用,并内联函数 - 有效地使其与使用宏相同.但是为了明确起见,我们将在这篇文章中忽视这一点.