madf: (Default)
[personal profile] madf
Решил изредка постить про некоторые злобные хаки, которые приходится выполнять в процессе работы. Вот парочка.

Проект использует библиотеку IBPP. Проект поддерживает компиляторы от gcc-2.95 до 4-й ветки. gcc-2.95 не совсем полно поддерживает стандарт С++ версии 90-кудрявого года. В частности, у него отсутствуетшаблонный класс numeric_limits, который используется в библиотеке ibpp-2.5.3.1. Т.к. разработчики рекомендуют включать код библиотеки в проект - делаем маленький патчик, который возвращает нас к limits.h. Уродство, а что делать?

Этот-же проект вызывает ICE (Internal Compiler Error) при сборке с gcc 4-й ветки на x86_64. ICE на совершенно ровном месте. Путем последовательного коментирования кода приходим к выводу, что ICE возникает при присваивании полю структуры значения переменной которая мало того что extern, так еще и const volatile time_t! (К стати, в других местах кода присваивание проходит успешно). Что делаем? Т.к. бага проявляется только при включенной оптимизации, а переменная всегда кроме режима отладки равна time(NULL) добавляем пару директив препроцессора (при отладке используем переменную, при релизе - time(NULL)) и 1 пользовательский ворнинг: # warning "TODO: gcc v. 4.x generate ICE on x86_64"
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2026 01:59 pm
Powered by Dreamwidth Studios