假设我有这段代码(不要介意 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)))
哪个是更好的做法?或者两者都不是?我希望其他人对此有所了解。
最佳答案
Is this valid usage of inline? Does it make sense? Is this good practice? After all, if I recall correctly, inline means that function calls are replaced by function bodies, so
当然可以。你让它更清晰,这总是好的。
return seconds / 60.0 / 60.0 / 24.0
是的,结果就是这样。或者应该。 inline
只是一个提示,编译可能会做出其他决定。但是对于这样一个衬里,编译器会将其内联。
宏?为什么?如果可以用函数完成,为什么要使用宏?
关于c++ - 这是内联函数的有效用法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280087/