yigal_s' Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Thursday, October 28th, 2010

    Time Event
    12:48a
    программистское
    Порадовал, хоть и вогнал в шок, компилятор gcc.

    Я умудрился написать вызов pure virtual function из-под конструктора (причем, кажется, практически в той же ситуации, что и пару лет назад на другой работе). На этот раз не то чтоб совсем ступил, это было скорее следствие другой ошибки.

    Сюрпризом оказалось то, что код прекрасно себе работал на двух платформах, и даже QA не имел никаких претензий - вызывалась ровно та функция, что мне и была нужна. Отловил же баг мой коллега, скомпилировавший проект без оптимизатора.

    Чисто по человечески я авторов gcc прекрасно понимаю - это же совершенный маразм тупо переприсваивать указатель на виртуальную таблицу в процессе конструирования объекта. Как бы, работать надо, а не указатели переприсваивать почем зря.
    1:12a
    программизм: volatile or non-volatile
    Небезынтересно наблюдать за эволюцией смысла ключегого слова volatile в разных языках и даже разных компиляторах.
    Желающие работать с памятью атомарно, вернее, без локов, частенько используют это слово на С++ почем зря. С другой стороны, и убирать его порой как-то страшно бывает. Некоторым. ;-)
    Во всяком случае, без качественной подготовки инфраструктуры лично я бы его не убирал. Хотя и использовать его всерьез - ошибочно.

    Вот и Майкрософт, к примеру, имеет

    LONG InterlockedIncrement(LONG volatile *Addend);

    функцию с volatile параметром и точно такую же intrinsic

    long _InterlockedIncrement( long * lpAddend );

    но уже без volatile.

    "Мужыки, что сказать-то хотели???"

    << Previous Day 2010/10/28
    [Calendar]
    Next Day >>

About LJ.Rossia.org