четверг, 23 октября 2008 г.

Жесть рулонная...

while (got_clicks && zd->req_id.natural() == cur_req_id && calc (zd->block_id, zd->blockid_len, cur_b_id) == 0 && calc (zd->link_id, zd->linkid_len, cur_l_id) == 0
  || got_pages && zd->req_id.natural() == cur_req_id && calc (zv->block_id, zv->blockid_len, cur_b_id) == 0 && calc (zv->link_id, zv->linkid_len, cur_l_id) == 0)
{
  if (got_clicks && zd->req_id.natural() == cur_req_id && calc (zd->block_id, zd->blockid_len, cur_b_id) == 0 && calc (zd->link_id, zd->linkid_len, cur_l_id) == 0
    && (!got_pages
      || zv->req_id.natural() != cur_req_id
      || calc (zv->block_id, zv->blockid_len, cur_b_id) != 0
      || calc (zv->link_id, zv->linkid_len, cur_l_id) != 0
      || zd->time_clicked.natural() < zv->time_clicked.natural()) )
  {
    // ...
  }
}

понедельник, 20 октября 2008 г.

Разрыв мозга

// 1.

struct SomeStruct;
SomeStruct * ptr;

// 2.

struct SomeStruct * ptr;

Внимание, вопрос: в чём разница между этими двумя выражениями. Речь идёт о C++ (не о C).

четверг, 16 октября 2008 г.

// No comments...

A & a( *( new A() ) );

a.doSmth();
...

delete &a;

среда, 7 мая 2008 г.

Оригинальная замена std::terminate().

// OOoooops
{ char * p = ( char * )0xDEADBEEF; *p = 0; }

пятница, 14 марта 2008 г.

Лучшая документация - это сам код (С)

SV *
Perl_gv_const_sv(pTHX_ GV *gv)
{
if (SvTYPE(gv) == SVt_PVGV)
return cv_const_sv(GvCVu(gv));
return SvROK(gv) ? SvRV(gv) : NULL;
}


P.S.: нарушая принцип выдуманности авторов и случайности совпадений - это реальный код из исходников Perl.

пятница, 7 марта 2008 г.

Too much std and boost...
Как думаете, что делает этот код?

int line = 3;
ifstream f("somefile.txt");
string s;
while_loop(_3 != EOF, switch_statement(
_3 = bind
(&ifstream::get, _1),
case_statement<(ifstream::char_type)EOF>(),
case_statement<'\n'>(if_then(++_2 > line,
_3 = EOF)),
default_statement(if_then(_2 == line,
bind(&string::push_back, &s, _3)))
)) (f, *auto_ptr(new int(1)).get(),
*auto_ptr(
new ifstream::char_type(0)).get());
cout << s << endl;

четверг, 6 марта 2008 г.

Вы не любите итераторы??? Да вы просто не умеети их готовить!
std::vector< SomeClass * >::iterator it;
for ( int counter = 0; counter < v.size(); ++counter )
{
it = v.begin() + counter;
( *it ) -> SomeMethod();
}
Аффтар нашёл остроумный способ сообщить об ошибке.
void * some_func()
{
try
{
// some code
}
catch ( ... )
{
return (void *)(-1);
}
return NULL;
}

Вместо вступления

Любые фрагменты кода случайны и не имеют никакой связи с кодом реальных коммерческих проектов. Все авторы выдуманы, все совпадения случайны.