Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет prool ([info]prool)
@ 2014-09-05 21:38:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Программистские досуги
Развлекаясь сборкой разных версий мадов (MUD) я нашел интересный баг (или не баг, а фичу).

Некий код не собирался при помощи gcc 4.4.5 (Debian 6), хотя я помню, в 5 Дебиане я его собирал без проблем. Более подробный анализ показал следующую ситуацию:

Есть массив int flag[3]

flag[0] - это lvalue, это понятно

А вот конструкция вида

(i<0) ? flag[0] : flag[1]

рассматривается старым компилятором (3.*) как lvalue, а новым (4.*) нет

Возникает вопрос, есть ли у gcc 4.4.5 флага, чтобы он вел себя как 3.*, хотя бы в этой ситуации. Если нет, я тупо перепишу макрос на 3 строчки в функцию и все разрулится. Вообще, кто копал коды CircleMUD, это ужасужасужас. Эти упоротые укурки из Дании очень любят макросы, многострочные, длинные и много раз вложенные, хорошо, хоть без рекурсии


(Читать комментарии)

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

Как:
(комментарий будет скрыт)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Имя пользователя:
Пароль:
Тема:
HTML нельзя использовать в теме сообщения
Сообщение:



Обратите внимание! Этот пользователь включил опцию сохранения IP-адресов тех, кто пишет анонимно.