C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 这是内联函数的有效用法吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_450_1@假设我有这个代码(不要介意SecondsTominutes和minutesToHours是彼此的副本)
inline float SecondsTominutes(float seconds)
{
    return seconds / 60.0;
}
inline float minutesToHours(float minutes)
{
    return minutes / 60.0;
}
inline float HoursToDays(float minutes)
{
    return minutes / 24.0;
}
inline float SeconndsToHours(float seconds)
{
    return minutesToHours(SecondsTominutes(seconds));
}
inline float minutesToDays(float minutes)
{
    return HoursToDays(minutesToHours(minutes));
}
inline float SeconndsDays(float seconds)
{
    return minutesToDays(SecondsTominutes(seconds));
}

这是内联的有效用法吗?是否有意义?这是好习惯吗?毕竟,如果我没记错的话,内联意味着函数调用函数体替换,所以

return minutesToDays(SecondsTominutes(seconds))

应该相当于

return seconds / 60.0 / 60.0 / 24.0

对?

或者为此使用宏更好吗?

#define EXCHANGE_SEC_MIN(X) (x / 60.0)
#define EXCHANGE_MIN_H(X) (x / 60.0)
#define EXCHANGE_H_D(X) (x / 24.0)
#define EXCHANGE_SEC_H(X) (EXCHANGE_MIN_H(EXCHANGE_SEC_MIN(X)))
#define EXCHANGE_MIN_D(X) (EXCHANGE_H_D(EXCHANGE_MIN_H(X)))
#define EXCHANGE_SEC_D(X) (EXCHANGE_MIN_D(EXCHANGE_SEC_MIN(X)))

一个更好的做法?或者两者都不是?我希望其他人能分一杯羹.

解决方法

嗯,是的但没有.

在这一点上它并没有伤害任何东西,但也没有做你认为它做的事情.

一个excellent post about inline deft_code中正确地说:

因此,如果你这样做,它不会伤害任何人,但你的编译器听取你的提示的几率几乎为0.如果它认为适合内联代码,它本身就会这样做.

现在内联主要用于链接器,因为它允许多个编译单元中的多个定义.

如果您想确保您的代码尽可能快,并且您可以访问C 11,那么您应该使用COnstexpr:

constexpr float SecondsTominutes(float seconds)
{
    return seconds / 60.0;
}
//etc..

大佬总结

以上是大佬教程为你收集整理的c – 这是内联函数的有效用法吗?全部内容,希望文章能够帮你解决c – 这是内联函数的有效用法吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。