На главную Наши проекты:
Журнал   ·   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 что-то не так, то в системе сборки, то компиляторы разные по-разному делали. Надеюсь, что сейчас уже можно спокойно применять.

                  Надеюсь, что уже достаточно времени прошло, чтобы эти недочёты исправили.
                    И драсти. Вот товарищ делится впечатлениями от модулей. Хотя я бы предпочёл, чтоб опытом, но что есть.
                      Видел "плач Ярославаны", видел жалобы в угол Мелкомягких компилеров. Но есть и топчик - clang, который владеет!
                        Qraizer, и все же ...

                        Ты, как самый из продвинутых олд-фагов форума по С++, может всеж взвалишь на себя посильную ношу исследования этой темы?
                        Нам не нужны темы на Хабре, нужна местечковая "тёплая" (щетай "ламповая" тема). Типа, можно или не желательно, для новых проектов? Я про бесты и фэйлы ...
                        Пожалуйсто, напряги немного свои чякры! Уверен, что многие со мной тебя будут благодарить! Потом.
                        Молчят просто пока, но это дело времени. Уверен! :blink:
                          Если тебя интересует личный опыт, то прости, но до ноября у меня свободного времени не будет. Если просто рассуждения по теме, то это можно устроить, аргументировать точку зрения смогу.
                            Цитата Qraizer @
                            Если тебя интересует личный опыт, то прости, но до ноября у меня свободного времени не будет. Если просто рассуждения по теме, то это можно устроить, аргументировать точку зрения смогу.

                            Да нет, время ждёт конечно! Интересуют конечно не "популистские" посты на Хабре. Да, я понимаю, что у нас часто бывают тут конфликты ... Но со времени "ушедшего в небеса" Флекса Ферума - ты остался щетай один из олдфагов. С тебя и спрос. И это не только реакция десятков форумчян, но и сотен тысяч гостей и ботов! Вам должно понимать, это суровая ответственность!!! :wall:
                              Qraizer, скажи просто "по-честноку", тебе бы было интересно начать новые проекты с "модульностей" ???
                              Или все же "нет", с определённой долей скептицизма и осторожностей?!
                                Нет. Мне с них итоговой выгоды никакой, затраченные усилия на смену парадигм проектирования не окупятся.
                                  Ясно, +++
                                    В нашем мире полно офигенных технологий.
                                    Я вот задолбался с bazel, я бы тому кто это придумал - с удовольствием заехал в табло, с ноги. Ибо нехер выёживаться. А тут еще и модули. Как же я задолбался...
                                    Сообщение отредактировано: sharky72 -
                                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                    0 пользователей:


                                    Рейтинг@Mail.ru
                                    [ Script execution time: 0.0771 ]   [ 17 queries used ]   [ Generated: 19.09.26, 18:06 GMT ]