История изменений
Исправление question4, (текущая версия) :
Ещё добавлю что для версии, собираемой с -О0 можно использовать флаги gcc типа -fkeep-inline-functions
С этого начал. Не помогло.
и -fgnu89-inline.
А вот с ним всё работает.
Идея inline ф-ий заключается в их подстановке при компиляции и линковке. При отсутствии оптимизаций gcc гонит всё «как есть» линкеру, не выстраивая оптимизированную таблицу перекрёстных ссылок. При отсутствии оптимизаций (-О0 же!) ни каких оптимизаций не производится и инлайнинга тоже. Ф-я не подставляется без оптимизаций.
Я с самого начала прогнал «gcc -E unxwb.c > preprocessed.c»; убедился, что все инклуды в нём есть, и все 4 инлайнемых функции присутствуют; затем попытался собрать «gcc preprocessed.c -lz». В результате получил те же ошибки — не нашло инлайн-функции.
То есть, если функции приписать атрибут inline, при сборке без оптимизаций она будет выброшена, и такое поведение соответствует замыслу авторов-разработчиков?
Исходная версия question4, :
Ещё добавлю что для версии, собираемой с -О0 можно использовать флаги gcc типа -fkeep-inline-functions
С этого начал. Не помогло.
и -fgnu89-inline.
А вот с ним всё работает.
Идея inline ф-ий заключается в их подстановке при компиляции и линковке. При отсутствии оптимизаций gcc гонит всё «как есть» линкеру, не выстраивая оптимизированную таблицу перекрёстных ссылок. При отсутствии оптимизаций (-О0 же!) ни каких оптимизаций не производится и инлайнинга тоже. Ф-я не подставляется без оптимизаций.
Я с самого начала прогнал «gcc -E unxwb.c > preprocessed.c»; убедился, что все инклуды в нём есть, и все 4 инлайнемых функции присутствуют; затем попытался собрать «gcc preprocessed.c -lz». В результате получил те же ошибки — не нашло инлайн-функции.
То есть, если функции приписать атрибут inline, при сборке без оптимизаций она будет выброшена, и такое поведение соответствует замыслу авторов?