madf: (Default)

Початок

Для початку коротко підсумую висновки зроблені у попередньому пості.

  • C++ не надає ніяких механізмів динамічного завантаження коду;
  • Динамічне завантаження коду можливе у мові C;
  • Для створення екземплярів плаганів використовуються функції-фабрики, а для уравління - абстрактний інтерфейс;
  • Щоб уникнути name mangling функція-фабрика помічається як export "C", при цьому цілком і повністю втрачається інформація про тип функції;
  • Доступ до функції можливий тільки через reinterpret_cast із void *.

Усе це в купі означає що за такого підходу ні про яку type safety і мови бути не може. Виходу немає?

Вихід є! У C++ можливо реалізувати систему плагінів на базі динамічно завантажуваних бібліотек і при цьому настільки типобезпечну, на скільки це взагалі можливо у C++! Як же цього добитись?

Read more... )
madf: (Default)
Про що можуть думати люди напередодні Нового Року? Про випивки, про закуски, про подарунки і ялинки. Про людей в кінці кінців. Я ж, як відомо, схибнутий на строгій типізації, думав про плагіни в C++ і безпеку їх використання з точки зору типів. І надумав страшну річ: C, на відміну від C++, повністю втрачає інформацію про тип функції на етапі компіляції. Але про все по порядку.
Многабукаф )
На цьому покищо зупинюсь, бо букаф і так вийшло забагато. Вихід із цієї скрутної ситуації опишу у наступному пості.
Продовження

Profile

madf: (Default)
madf

April 2018

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

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 21st, 2025 09:29 pm
Powered by Dreamwidth Studios