• Розвиток C++ девелопера

    Местные «спецы» просто не в курсе манглинга и передачи параметров в функции. Логично, ни жабаскрипт, ни питон, ни гоу, ни раст подобных знаний не требуют.

    extern «C» это больше, чем просто манглинг или очерёдность параметров. Но жабаскриптерам то неведомо. :)

  • Розвиток C++ девелопера

    Достаточно было добавить в стандарт с++ раздел по бинарной совместимости.

    Вот так просто. :)

    И почему не добавили, как думаешь?

  • Розвиток C++ девелопера

    Это как это перестают? Они бросаются, а дальше ось за тобой подчистит после приложения и мирно его упокоит.

    Бросить-то ты можешь. «плюсовый» компилятор такое не запретит.

    Но бросок этот из шаред библиотеки — не закончится ничем хорошим. :)

  • Розвиток C++ девелопера

    Статические библиотеки не распространены по совсем другим причинам, вообще-то.

    По этим. Если бы не эти причины, распространяли бы код в них — это удобнее, чем шаред-библиотеки.

  • Розвиток C++ девелопера

    В сишке с большего все в этом плане хорошо, если не смотрять на какие-то уж совсем маргинальные компиляторы.

    С разными компиляторами тоже всё плохо. Скомпилированная под gcc статическая библиотека — будет неюсабельна в силанге или в вижуалс.

  • Розвиток C++ девелопера

    ну расскажи, как же я использую тот же кьют, где остался только си, или стд либы или сотни других библиотек типа буста и тд

    Qt распространяется в исходниках. Буст тоже.

    А по «qt static libraries» — находится, к примеру, такое: doc.qt.io/...​t-5/linux-deployment.html
    «Building Qt Statically»...

    Так и используешь...

  • Розвиток C++ девелопера

    Чувак, ABI есть всегда.

    Ок, уговорил. Переформулирую: в мире «плюсов» АБИ-совместимость ограничивается одной конкретной версией конкретного компилятора — которым был скомпилирован код. :)

    Собственно, поэтому ты не увидишь «плюсового» кода, распространяемого в виде статических библиотек. Для распространения «плюсового» — существуют либо шаред библиотеки (из которых выкинуто всё плюсовое, а интерфейс полностью сведен к С), либо исходники.

  • Розвиток C++ девелопера

    ABI есть

    Лишь в виде недоделанных спецификаций.

  • Розвиток C++ девелопера

    есть четкие правила нейм манглинга для плюсов, не надо пороть чушь

    Различный нэйм-манглинг при экспорте — есть и для сишного кода. Я вообще не об этом.

  • Розвиток C++ девелопера

    А вот здесь ты полностью ошибаешься.

    Регулярно встречаю адские корчи мобильщиков, пытающихся топором и напильником запихнуть к себе в мобайл какую-нибудь реализацию стл, чтобы попользоваться оттуда херью типа стринга или мэпа.

    А в эмбедде, редко где вообще «плюсовый» компилятор встретишь. Или если yж встретишь — это будут совсем иные «плюсы» чем те, к которым ты привык.

  • Розвиток C++ девелопера

    Itanium ABI — это дефакто стандарт на невиндовых системах

    Так нет его. Он существует лишь в виде драфтов недоделанных спецификаций.

  • Розвиток C++ девелопера

    Получается, что этот сишник незрелый )

    Скорее, аудитория собраласъ недозрелая, ни в «сях», ни в «плюсах.» Я ведь пишу элементарные общеизвестные вещи — а это для людей откровения и вызывает полыхания. :)

    Ок, разжую совсем мелко. Что предусматривает АБИ-стандарт? Компилируешь код в бинарный вид — и используешь его везде, где этот стандарт поддерживается. И тут оказывается, что с «сишным» кодом такое неплохо работает даже в виде статических библиотек (херь, скомпилированная на древнем gcc под тот же Линукс 15-тилетней давности — будет вполне себе работоспособная на последней Убунте). А для «плюсового кода» — такое не работает даже в виде шаред библиотек.

    Такая вот разница в АБИ.

  • Розвиток C++ девелопера

    Зачем глупости писать продолжаешь?

    „Specific software implementations like the C library may impose additional limitations to form more concrete ABIs; one example is the GNU OABI and EABI for ARM, both of which are subsets of the ARM EABI .”

    Найди здеь упоминание „плюсов”.

    Впрочем, в статье есть ссылка на попытку формализации „плюсового” АБИ для Итаниума — так и оставшаяся в виде драфтов...

  • Розвиток C++ девелопера

    Так все таки, что такое ABI?

    en.wikipedia.org/...​lication_binary_interface

    В мире «си» подобное существует, в том же линукс-кернеле.

    В мире «плюсов» существование, подозреваю, нереально в принципе. Т.к. нет совместимости «плюсовых» бинарников, даже одного кода — после обработки разными версиями одного «плюсового» компилятора.

  • Розвиток C++ девелопера

    Плюсовых в библиотек в жизни не видел, не слышал, не знаешь?

    Видел. Говнецо, в бинарном виде не совместимое ни с чем — кроме самой себя.

    А для того, чтобы хоть как-то экспортировать «плюснутое» из шаред библиотеки — приходится пользовать extern «C». При этом, полностью кастрировав все «плюсовые» фичи.

    Такая вот «бинарная совместимость». :)

  • Розвиток C++ девелопера

    Linux Kernel

    Хороший пример, кстати. И в смысле наличия АБИ тоже.

  • Розвиток C++ девелопера

    Cross-platform + embedded

    В кросс-платформе — портабельностъ «плюсов» невелика. В эмбеде — отстутствует.

  • Розвиток C++ девелопера

    Наслідування інтерфейсів, як traits в Scala, досить кошерне.

    Ромбовидное наследование в «плюсах» (т.н. «виртуальный базовый класс») — это не об интерфейсах.

    Підтримав: flyman
  • Розвиток C++ девелопера

    libc? Ні, не чув.
    msvcrt? Ні, не чув.

    Які сішники, така і зрілість.

    extern «C» ? Не, не слыхал.

    А между тем, чтобы обеспечитъ хоть какую-то возможность экспортировать функции из шаред библиотек — «плюсовикам» приходится прибегать к старым-добрым сишным конвенциям, со всеми ихними ограничениям. Т.е. прощайте вируальные вызовы, исключения, RAII, темплиты, итп «плюснутая» хрень — которую даже не смогли экспортировать за пределы библиотек (о какой уж там «бинарной совместимости» этого кода говорить).

    И это я ещё не касался вопросов выхода статической «плюсовой» библиотеки (в бинарном виде), за пределы сделавшего библиотеку компилятора/линкера и тулсета.

  • Швеция? Моя история))

    Пфф, с какой стати они вообще имеют отношение к уволенным?

    Отличие от работающих в том, что работающие платят налоги — а сидящие на курцарбайте (как и собственно безработные) из налогов жрут.

    Потому, когда в европейских статистиках по безработице рисуют цифры только из безработных — это фикция.

    Підтримали: anonymous, Artem Kurakin
← Сtrl 1234567 Ctrl →