用宏还是用inline?
赵文波 2010-11-03 12:03:08 都说在C++中,用inline比使用宏更安全。但是我看过的一些开源项目中,似乎更多的还是在使用宏。
例如下面这两段代码,实现的功能是完全一至的。四舍五入一个浮点数。(来自CEGUI)
那么如果这两个函数都是需要大量调用的。那么写成哪一种形式更好呢?CEGUI里用的是宏。
另:在实际的项目开发中,宏和inline各自的优缺点各是什么?
//////////////////////////////////////////////////
#define CEGUI_ALIGN_ELEMENTS_TO_PIXELS
#if defined(CEGUI_ALIGN_ELEMENTS_TO_PIXELS)
#define PixelAligned(x) ( (float)(int)(( x ) + (( x ) > 0.0f ? 0.5f : -0.5f)) )
#else
#define PixelAligned(x) ( x )
#end
//////////////////////////////////////////////////
#define CEGUI_ALIGN_ELEMENTS_TO_PIXELS
#if defined(CEGUI_ALIGN_ELEMENTS_TO_PIXELS)
template <class T> inline T PixelAligned(T t)
{ return (T)(int)(( t ) + (( t ) > 0.0f ? 0.5f : -0.5f)); }
#else
template <class T> inline T PixelAligned(T t)
{ return t; }
#endif