inline unsigned int getminutes( unsigned int seconds )
{
return( seconds / 60 );
}
#define GetMinutes(seconds) (seconds) / (60)
老实说,我会问哪个更快,但是我在 SO 上看到了很多,所以问哪个更好会给我知识。(是的!我是知识猎手)
inline unsigned int getminutes( unsigned int seconds )
{
return( seconds / 60 );
}
#define GetMinutes(seconds) (seconds) / (60)
老实说,我会问哪个更快,但是我在 SO 上看到了很多,所以问哪个更好会给我知识。(是的!我是知识猎手)
如果您可以使用内联函数来实现相同的功能,请不要使用宏。假设您使用的是相当不错的解决方案,编译器将为您提供的两种解决方案生成完全相同的代码。
当然,不能保证内联函数实际上会被内联,但在这些情况下,如果您的编译器不能内联该函数,那么它可能是一个非常糟糕的函数。
除非你真的需要,否则不要使用宏(标题保护,做重复的事情等)。宏在几个方面都是邪恶的,如果您在线搜索信息,您可以阅读很多相关信息。
inline
我猜如果您认为要使用的编译器不能保证宏会更快。如果函数没有内联,那么你就有函数调用的开销。
宏将由预处理器展开,所以它总是内联的。该宏也不是类型安全的并且具有全局范围。
函数是首选。
使用良好的优化编译器,性能将是相同的。不同之处在于内联函数或多或少是对编译器的建议。尽管编译器在大多数情况下应该遵守建议,但宏版本将强制编译器内联代码。
顺便说一句,应编写宏((seconds) / 60)
以确保在所有情况下都使用预期的分组。