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

0

  1. 1
#define arrVec[2].realVectorInfo.Count 5

Мало того, что встретил это в проекте, доставшемся от "предков", так ведь и MSVS 6.0 проглатывает.
Выражение arrVec[2].realVectorInfo.Count успешно заменялось на 5.
Заметил подставу после появления строки arrVec[i].realVectorInfo.Count в проекте, в результате рефакторинга.

Запостил: Говногость Говногость, (Updated )

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

  • Одни эмоции. Говорил же я, что macros are evil! В Паскале такой глупости нет.
    Вот только C++ не смог найти. В Си это не скомпилируется?
    Ответить
  • Мне кажется, или тут есть какое то скрытое говно?
    Ответить
    • Попробую поработать капитаном, потом скажете, получилось у меня или нет.

      Препроцессор, увидев где-нибудь заклинание arrVec[2].realVectorInfo.Count, тут же поторопится его заменить на 5, даже если оно встретится в левой части оператора присвоения (о, ужас!). Самое коварное, что в правой части нет скобок, поэтому последствия непредсказуемы.

      Если же в программе будет arrVec[i].realVectorInfo.Count, то даже в случае i равного 2 подстановка не выполнится. Отладчика ждёт палата №6.
      Ответить
      • Вполне, только
        > Отладчика ждёт палата №6.
        Кэп должен был без метафор описать, что произойдёт.
        Ответить
  • А ведь никто и не заметил!
    Злободневность говнокода всем затманила глаза...
    С++ то нет! ^_^
    Ответить
    • Конечно, нехорошо показывать пальцем, особенно на самого себя, но придётся нарушить это правило. Смотрите САМЫЙ первый комментарий к говнокоду.
      Ответить

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

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

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


    8