Любителям "оптимизировать" код компилятора.
Даже не конкретно про VC71, вообще оптимизатор у современных компиляторов.
Color::Color(unsigned r_, unsigned g_, unsigned b_, unsigned a_=255) : rgba8(r_,g_,b_,a_){}
operator Color::unsigned() const
{
return static_cast<unsigned>(r)|
static_cast<unsigned>(g<<8)|
static_cast<unsigned>(b<<16)|
static_cast<unsigned>(a<<24);
}
sym.SetColor(0,Color(255,0,0));
Оптимизируется в это.
sym.SetColor(0,Color(255,0,0));
0044611A push 0FF0000FFh
0044611F push ebx
00446120 lea ecx,[esp+64h]
00446124 call agg::Symbol::SetColor (4906E0h)
Хорошо, позволяет убирать разные хаки.
Раньше стояло
operator Color::unsigned() const{return *(unsigned*)&r;};
так даже более длинный код генерировало.
24.02.10 13:49: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт