Pull to refresh
-12
@1vanKread⁠-⁠only

User

Send message

Использование auto везде превращает код в нечитаемый. Суть auto - упростить, а не усложнить чтение кода (например нужен в итераторах). Код чаще читается, чем пишется

Даже на винде лучше bash использовать, чем связываться с очередным "инновационным творением" микрософта. Если у вас установлен git, то и баш уже есть

Rust — хороший выбор для разработки игр.

Можно ли небольшое пояснение, почему он так хорош для разработки игр?

Любой аспект, о котором я могу задуматься, говорит о том, что раст хуже C++ для разработки игр.

Функция, определенная полностью внутри определения класса/структуры/объединения, неявно является встроенной функцией

В модулях C++20 все функции полностью определены вунтри классов и inline в модулях нужно писать явно

VS поддерживает, но огромная проблема c IntelliSense

На данный момент (версия 17.1.0 Preview 1.1) IntelliSense все еще не работает с модулями C++20. Ну в тестовом примерчике с одним модулем может и справится, но когда их больше и зависимости между ними сложнее, IntelliSense подвисает на каждый чих и в итоге отказывается выдавать любую подсказку. В итоге работа в IDE ничем не отличается от работы в блокноте

Class1.h

#pragma once

#include "Class2.h"

class Class2;

class Class1
{
public:
    Class2* cl;
  
    Class1() = default;

    Class1(const Class2& obj)
    {
    }
};


Class2.h

#pragma once

#include "Class1.h"

class Class1;

class Class2
{
public:
    Class1* cl;

    Class2() = default;

    Class2(const Class1& obj)
    {
    }
};

Main.cpp

#include "Class1.h"
#include "Class2.h"

int main()
{
    Class1 cl1;
    Class2 cl2(cl1);
}

Т.е. заголовки могут подключать друг друга, кто первый подключил, тот и молодец. А модули так не могут

Я так понял он про случай, когда есть 2 класса и в каждом из них есть поле с типом другого класса

А для module implementation unit походу работает только расширение cpp (в VS). Только в нем "module имя_модуля;" не вызывает ошибку.

Тут можно найти ещё одно применение безымянным namespace.

Нынче нужно писать expot { ... }

С расширениями файлов для модулей вообще непонятка. Тут https://en.cppreference.com/w/cpp/language/modules из примеров чётко видно, что модули можно сохранять в cpp-файлах. Но если так сделать, то VS выдаёт ошибку "Error C3378 a declaration can be exported only from a module interface unit". VS поддерживает расширения cppm и ixx, clang вроде бы только cppm (не проверял), CMake версии 3.21 уже распознаёт cppm и ixx файлы как C++. Т.е. для module interface unit оптимально сейчас использовать расширение cppm. Но как дела обстоять с GCC?

Это обосновывает процесс установки. При разработке изолированной библиотеки не будешь же каждый раз при отладке ставить заголовки, поэтому обращение обязательно через "". А чтобы другие либы/приложение могли использовать эту либу, ее надо ставить, и тогда они подключают заголовки через <>.

В интерфейсе, то есть директории include нужно обращаться по <>.

Нет. В директории include к другим заголовкам из той же библиотеки тоже нужно обращаться через "".

Да я видел уже. Там тоже есть вопросы. Если уж оформлять mylib как отдельную библиотеку, то очевидно ее .h и .cpp должны быть отделены от общей мешанины, а в .cpp должно быть обращение к своим заголовочным файлам как #include "", как это во всех библиотеках сделано. И только когда заголовки проинсталлятся, другие библиотеки/приложения будут обращаться к этим заголовкам через #include <>.

Я не люблю критиковать чужую работу, но не нашел
Ну допустим у меня архивчик с модулем, который я хочу добавить в общую массу, мне загонять его в репозиторий придется, что cmake его по общей схеме опять вытянул?
Ну я на крайняк могу ставить в cmake_binary_dir, осталось выяснить как делать полноценные cmake модули. Такой туториал я как раз и гуглил
> Если это просто куски проекта, то, вроде, нет необходимости следить за версиями, поскольку и так всё лежит под контролем версий.

модули могут быть из разных источников и под разные версии движка

Information

Rating
Does not participate
Registered
Activity