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));
}
はインラインのこの有効な使用です(SecondsToMinutesとMinutesToHoursが互いのカーボンコピーであるという事実を気にしない)のは、私はこのコードを持っているとしましょうか?それは理にかなっていますか?これはいい練習ですか?私が正しくリコール場合は結局のところ、インラインは
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)))
これはどちらが良い方法ですか?またはどちらもですか?私は他の人にこれについてセントをしたいと思います。
マクロほとんど*必ず* :-) – paxdiablo
間違った方法ですあなたのマクロも間違っています: 'EXCHANGE_SEC_MIN(a + b)'のように使うとどうなりますか? – mch
*マクロはほとんど常に間違った方法です*言い換えれば、マクロ(この場合は関数ですが、インラインであってもなくても)がマクロを避けることを好みます。 – Leon