На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Использование модулей С++20
   
Вы уже используете модули в своих проектах?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Начиная с C++20 (и дальше в C++23/C++26) в языке официально появились модули (modules), которые позволяют строить проект без классического разделения на заголовочные (.h/.hpp) и файлы реализации (.cpp). Что-то подобное на реализацию кода в Object Pascal/Delphi, с разделением на блоки описания интерфейса и реализации в одном файле исходного кода.

    Пример:

    ExpandedWrap disabled
      // MyModule.cppm
       
      export module MyModule;
       
      import <string>;
       
      // - - - - - - - > Как "interface" в Delphi
       
      export class Person {
      public:
          Person(std::string name);
          void greet() const;
       
      private:
          std::string name_;
      };
       
      // - - - - - - - > Как "implementation" в Delphi
       
      Person::Person(std::string name) : name_(std::move(name)) {}
      void Person::greet() const {
          // ...
      }
      Так и до begin/end скоро дойдут...
      Извиняюсь за офтоп
        Уже 6 лет как. std::ranges:
        ExpandedWrap disabled
          std::vector<int> arr;
          /* ... */
          std::ranges::sort(arr);
          Цитата SergeyIT @
          Так и до begin/end скоро дойдут...
          Извиняюсь за офтоп

          Можно не ждать, уже давно можно ;)

          ExpandedWrap disabled
            #define БЭГИН {
            #define ЭНД }
            #define ЕСЛИ if
            #define ЕСЛИ_НЕ else
            #define СЛИВАЙ_КЕРОСИН return
             
            #include <iostream>
             
            int main() БЭГИН
              int ФЛАГ = 1;
              ЕСЛИ (ФЛАГ ==1)
              БЭГИН
                std::cout << "Привет, мир!\n";
              ЭНД
              ЕСЛИ_НЕ
              БЭГИН
                СЛИВАЙ_КЕРОСИН 1;    
              ЭНД
            ЭНД

          Только вопрос был в друом: почему в прорубь не окунаетесь голосовалке не голосите? >:(
            Ку-ку ептель :( А вот c Qt в этом плане проблемсы. Там один из этапов - предобработка исходного кода с помощью MOC (мета-объектный компилер). А он не в зуб ногой про модули. Бида и пичаль! :-? Но есть и хорошая новость (относительно хорошая), в файлах проекта, если не использовать Q_OBJECT - все будет по фэн-шую. Современные средства сборки (типа cmake, qbs) поддерживают смешанный синтаксис - старые варики с заголовками и реализацией, и новые модульные, и это всё можно смешивать!

            Добавлено
            Qraizer, ну ты хоть проголосуй, пажалуста!!!
              Ну ок, проголосил.
              Я честно пытался найти модулям применение и не нашёл. Модули требуют иной модели декомпозиции, и она не пересекается с привычной. ИМХО единственный плюс модулей в отсутствии необходимости предоставлять компилятору интерфейсы в текстовом виде, что, впрочем, вполне понятно, ибо ему вполне достаточно деревьев грамматического разбора. Но недостаточно человеку, который использует этот модуль, и ему не обойтись без документации. Каковую <заголовки> вполне себе могут предоставить, если правильно организованы.
              В убогом виде модули уже давно присутствуют в некоторых средствах разработки в лице предкомпилированных заголовков. Так что те, кто их использовал в своих проектах, прекрасно знают про ограничения и правила правильной организации, иначе профита от них не будет, и относительно дёшево могут заменить их на модули. Мне эти правила никогда не нравились, я их и не использовал.
              Модули могут легко использоваться в новых проектах, если сразу начать их проектировать с их учётом, но уже имеющиеся проекты на модули переносить нет никаких резонов.
                Только собираюсь попробовать. Раньше когда подступался, всегда были проблемы с инструментами, то в ide что-то не так, то в системе сборки, то компиляторы разные по-разному делали. Надеюсь, что сейчас уже можно спокойно применять.
                  Цитата D_KEY @
                  Только собираюсь попробовать. Раньше когда подступался, всегда были проблемы с инструментами, то в ide что-то не так, то в системе сборки, то компиляторы разные по-разному делали. Надеюсь, что сейчас уже можно спокойно применять.

                  Надеюсь, что уже достаточно времени прошло, чтобы эти недочёты исправили.
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0.0684 ]   [ 17 queries used ]   [ Generated: 25.05.26, 21:55 GMT ]