Кресты / Говнокод #11352 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
template<class T>
bool IsAligned(T SizeOrAddress, const size_t AlignStep)
{
	return SizeOrAddress==Align(SizeOrAddress, AlignStep);
}

Запостил: HaskellGovno HaskellGovno, (Updated )

Комментарии (7) RSS

  • Чтобы понять, сколько лишних операций тут делается (достаточно лишь % и ==), то:
    template<class T>
    	T Align(T SizeOrAddress, const size_t AlignStep)
    	{
    		if(SizeOrAddress%AlignStep==0)
    			return SizeOrAddress;
    		else
    			return SizeOrAddress+(AlignStep-(SizeOrAddress%AlignStep));
    	}
    Я не проверял, но судя по всему для кого-нибудь void* не с компилируется, а для int* будет не верно работать?
    Ответить
    • Наверное сверху вниз писали. IsAligned определим через Align, a потом уже напишем Align.
      Ответить
      • Всё равно, что чесать левую пятку правым ухом, когда можно проще:
        return SizeOrAddress%AlignStep==0;
        Ответить
  • Может впоследствии будут добавлены какие-нибудь дикие правила выравнивания?
    Ответить
  • - Ты уж сынок молодец, что поступил, ну уж родителям помоги, пока дома, потом уж редко будем видеться - каждые выходные не наездишься.
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8