-
- я считаю, что инклуд должен компилироваться без ошибок. Но каждый
дрочит, как он хочет. - abivan(14.04.2025 15:29)
- Инклюд вообще не должен компилироваться. В нём не должно быть
определений. Только объявления. Можно, конечно, всю библиотеку
зафигачить в один .h. Но это совсем другое. - Nikolay_Po(14.04.2025 18:42)
- Есть header-only библиотеки, но да, в отдельном сишном файле нужно
объявить макрос инициализации. А еще можно true-inline функции в
header'ы складывать.. - Eddy_Em(14.04.2025 22:15)
- inline - это для маньяков. И для маньяков давно придумали получше:
LTO. - SciFi(14.04.2025 22:16)
- С LTO иногда непонятные глюки при сборке получаются. Но да, штука
очень полезная. Я даже под STM32 в release-сборке -flto добавляю. - Eddy_Em(14.04.2025 23:23)
- Дорос. Глюки при сборке с ЛТО - повод рефакторить код. - Nikolay_Po(14.04.2025 23:42)
- Это да: свою утилиту для работы с ПЗС/КМОП-светоприемниками я
добрую неделю "рефакторил" после того, как решил LTO добавить. Eddy_Em(179 знак., 15.04.2025 08:37)
- Был, например, случай, когда сломался код для SPI флешки.
Оказалось, нужно было добавить явную задержку на Chip Select. Эта
задержка получалась сама собой, пока LTO не было включено. Но
отлаживать такие вещи сложно, конечно. Дизассемблер и исходник
могут сильно разъехаться. - SciFi(15.04.2025 09:27)
- Хмм... Мой код не ломается. Я тщательно изучаю документы и проверяю сигналы осциллографом. Потом добавляю в код задержку принудительно, чтобы при максимальной скорости исполнения, необходимые интервалы были гарантированно выдержаны. Иногда ставлю задержки даже там, где код не успевает и так. Но ставлю. Как раз чтобы не получить неопределённого поведения аппаратуры при перекомпиляции другим компилятором с другими параметрами. - Nikolay_Po(15.04.2025 09:35)
- Был, например, случай, когда сломался код для SPI флешки.
Оказалось, нужно было добавить явную задержку на Chip Select. Эта
задержка получалась сама собой, пока LTO не было включено. Но
отлаживать такие вещи сложно, конечно. Дизассемблер и исходник
могут сильно разъехаться. - SciFi(15.04.2025 09:27)
- Это да: свою утилиту для работы с ПЗС/КМОП-светоприемниками я
добрую неделю "рефакторил" после того, как решил LTO добавить. Eddy_Em(179 знак., 15.04.2025 08:37)
- Дорос. Глюки при сборке с ЛТО - повод рефакторить код. - Nikolay_Po(14.04.2025 23:42)
- С LTO иногда непонятные глюки при сборке получаются. Но да, штука
очень полезная. Я даже под STM32 в release-сборке -flto добавляю. - Eddy_Em(14.04.2025 23:23)
- inline - это для маньяков. И для маньяков давно придумали получше:
LTO. - SciFi(14.04.2025 22:16)
- У меня нет определений в инклудах. Но инклуды все самодостаточны, и
могут быть скомпилированы без сообщений о том, что какой то тип,
который объявлен в другом инклуде не объявлен. - abivan(14.04.2025 19:16)
- Есть такой вариант. Да, хорошо делать так, чтобы для заявленного
библиотекой функционала, достаточно было включить её заголовок, без
ожиданий, что пользователь включит недостающее сам. Nikolay_Po(875 знак., 14.04.2025 23:52)
- Если пользователь не обращается к элементам структуры напрямую, только через функции-методы, то предоставлять поля структуры в хедере не обязательно. Только имя для связывания. Это позволяет спрятать все артефакты внешней либы от пользователя и соответственно не инклудить её хедеры. Без всяких приведений типа. =AlexD=(278 знак., 15.04.2025 09:46)
- Есть такой вариант. Да, хорошо делать так, чтобы для заявленного
библиотекой функционала, достаточно было включить её заголовок, без
ожиданий, что пользователь включит недостающее сам. Nikolay_Po(875 знак., 14.04.2025 23:52)
- Есть header-only библиотеки, но да, в отдельном сишном файле нужно
объявить макрос инициализации. А еще можно true-inline функции в
header'ы складывать.. - Eddy_Em(14.04.2025 22:15)
- Инклюд вообще не должен компилироваться. В нём не должно быть
определений. Только объявления. Можно, конечно, всю библиотеку
зафигачить в один .h. Но это совсем другое. - Nikolay_Po(14.04.2025 18:42)
- я считаю, что инклуд должен компилироваться без ошибок. Но каждый
дрочит, как он хочет. - abivan(14.04.2025 15:29)