C - 参数化宏

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)

Fil*_*efp 5

通过使用#define macro你强制宏的主体插入内联.

当使用功能会有1是一个函数调用(和为此跳转到函数的地址(除其他事项外)),这将一定程度上降低性能.

前者通常会更快,即使每次使用#defined宏时可执行文件的大小也会增加.



1 编译器可能足够智能以优化函数调用,并内联函数 - 有效地使其与使用宏相同.但是为了明确起见,我们将在这篇文章中忽视这一点.