170 похожих чатов

Я рот наооборот #include. Есть альтернативы?

58 ответов

3 просмотра

import?

Коля🇺🇦
import?

который мало где работает...

disba1ancer
который мало где работает...

Нуу, это уже другая проблема))

Vladimir-🖤 Автор вопроса
Коля🇺🇦
import?

Спасибо, посмотрю примеры

Коля🇺🇦
Нуу, это уже другая проблема))

я бы не стал советовать в чате для новичков суперновую фичу, которая почти не поддерживается

А что с ним не так

Vladimir 🖤
Спасибо, посмотрю примеры

только ты особо слюни не распускай, нормальный компилятор поддерживающий такую штуку трудно найти (msvc нормальным не считаю)

Vladimir-🖤 Автор вопроса
Skarn
А что с ним не так

Тупая система. Ради одного метода он подключает весь хедер со всеми class def и прочим.

Skarn
Смирись

все споры по с++ би лайк

Егор (Дима)
все споры по с++ би лайк

Ну а что делать то ещё, альтернатив нет. Модули альтернативой не считаю, т.к. их пока нигде нет

Переведи

modules

Vladimir-🖤 Автор вопроса
Vladimir 🖤
Тупая система. Ради одного метода он подключает ве...

Однако ж. Это Вы с позиции кого заявляете? Видимо, не пользователя, поскольку ему-то как раз написать два слова труда не составит. Сможете со стороны разработчика языка предоставить сколь-нибудь объективную критику системы подключаемых заголовков?

Vladimir 🖤
Тупая система. Ради одного метода он подключает ве...

Делай хедеры меньше, группируй пространства имен

Artöm Bakri Al-Sarmini
Дублирование кода в ней есть

Это какого-такого кода дублирование в ней есть? Не того ли, случайно, который объясняет компилятору, что делать с тем или иным идентификатором? Компилятор, напоминаю, работает в пределах одной единицы трансляции (.cpp-файла, если традиционно). Можно ли считать такой код дублированием, в таком случае?

Егор (Дима)
все споры по с++ би лайк

Потому что аргументированно спорить по дизайну языка не каждый можеь

Sergey Anisimov
Однако ж. Это Вы с позиции кого заявляете? Видимо,...

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

Sergey Anisimov
Это какого-такого кода дублирование в ней есть? Не...

Дублирование объявлений функций. Дублирование исходного кода я имею в виду

Егор (Дима)
это щас правда просят аргументы того, что копипаст...

Еще раз задам свой вопрос: Где здесь копипаста кода?

Егор (Дима)
это щас правда просят аргументы того, что копипаст...

Я говорю не про то, как #include обрабатывается, только про написание кода

Егор (Дима)
как мне не экспортировать макрос?)

Не ликайте его из хедера, очевидно. #undef.

Егор (Дима)
а мне в цпп он типо не нужен?

Так это Вам виднее, нужен он Вам в нем или нет. Если нужен - то зачем задаваться вопросом о том, как его "не экспортировать"?

Sergey Anisimov
Так это Вам виднее, нужен он Вам в нем или нет. Ес...

то что это макрос для конкретного класса, я не хочу чтобы его кто-то еще видел. Что мне делать?

Егор (Дима)
то что это макрос для конкретного класса, я не хоч...

Что означает "макрос для конкретного класса"?

Sergey Anisimov
Что означает "макрос для конкретного класса"?

макрос который используется в одном классе

Artöm Bakri Al-Sarmini
void f(); // <-- void f() { // <-- }

Пожалуйста, Вы вольны определить подпрограмму inline-овой прямо в хедере, если беспокоитесь о том, чтобы не писать прототипы. В остальном - подключаемое объявление описывает компилятору семантику идентификатора, как я уже говорил выше.

Егор (Дима)
макрос который используется в одном классе

Это как так? Пример можете привести? Макросы - препроцессор. У них нет областей видимости вообще.

Sergey Anisimov
Это как так? Пример можете привести? Макросы - пре...

#ifdef __cxx17 #define ENABLE_CONSTEXPR constexpr #else #define ENABLE_CONSTEXPR #endif class Foo { ENABLE_CONSTEXPR void kek(); }

оно все равно std либу линкуед

Sergey Anisimov
Это как так? Пример можете привести? Макросы - пре...

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

забей на єто и прийми как должное тебя єто не будет волновать

Егор (Дима)
#ifdef __cxx17 #define ENABLE_CONSTEXPR constexpr ...

Возвращаюсь к своему вопросу: что Вам мешает в конце Вашего хедера (как я понимаю?) прописать #undef ENABLE_CONSTEXPR?

Sergey Anisimov
Возвращаюсь к своему вопросу: что Вам мешает в кон...

то что этот хедер инклюдится в цпп где мне нужен этот макрос

Егор (Дима)
то что этот хедер инклюдится в цпп где мне нужен э...

Мы с Вами кругами ходим. Вы выносите макросы в самостоятельный заголовок. Подключаете его там, где они нужны. И не подключаете там, где не нужны. Если макросы нужны только в пределах заголовка - уничтожайте их определение через соответствующую препроцессорную директиву.

Sergey Anisimov
Мы с Вами кругами ходим. Вы выносите макросы в сам...

Я пишу библиотеку, почему юзер видит ENABLE_CONSTEXPR который он не должен использовать? Еще раз, я не могу написать андеф, потому-что он мне нужен в цпп

Егор (Дима)
Я пишу библиотеку, почему юзер видит ENABLE_CONSTE...

... В каком .cpp он Вам нужен? В .cpp с определением? Там этот макрос будет доступен. Предоставлять ли его в .cpp пользователя - Ваше решение.

Sergey Anisimov
... В каком .cpp он Вам нужен? В .cpp с определени...

как это он будет доступен если в конце хедера написан #undef

Егор (Дима)
как это он будет доступен если в конце хедера напи...

Опережу Ваши дальнейшие вопросы: /* enable_constexpr */ #define ENABLE_CONSTEXPR /* disable_constexpr */ #undef ENABLE_CONSTEXPR /* lib_header.hpp */ #include <enable_constexpr> /* declarations */ #include <disable_constexpr> /* lib_cpp.cpp */ #include <lib_header.hpp> #include <enable_constexpr> /* definitions */ /* user_cpp.cpp */ #include <lib_header.hpp> Есть проблемы?

Sergey Anisimov
Опережу Ваши дальнейшие вопросы: /* enable_constex...

есть, теперь мне нужно дважды инклюдить все хедеры с нужными макросами

Егор (Дима)
есть, теперь мне нужно дважды инклюдить все хедеры...

1. Вы можете собрать их в нужные Вам группы. 2. Инклуды в конце файла "выглядят всрато", потому что Вы слишком ригидно на них смотрите. 3. Дублирования кода никакого нет. Препроцессор недекларативен. Вы управляете его внутренним состоянием директивами.

Sergey Anisimov
1. Вы можете собрать их в нужные Вам группы. 2. Ин...

ну как нет дублирования, в примере выше два инклюда enable_constexpr

Егор (Дима)
ну как нет дублирования, в примере выше два инклюд...

Дублирования кода никакого нет. Препроцессор недекларативен. Вы управляете его внутренним состоянием директивами.

Artöm Bakri Al-Sarmini
Инлайн всего подряд замедляет сборку

Абсолютно верно, речь шла о конкретной проблеме.

Sergey Anisimov
Пожалуйста, Вы вольны определить подпрограмму inli...

Если они определены в хедере, они там имплицитно inline вроде как.

Sergey Anisimov
Абсолютно верно, речь шла о конкретной проблеме.

Решение проблемы созданием другой такой же серьезной проблемы это дичь

Artöm Bakri Al-Sarmini
Решение проблемы созданием другой такой же серьезн...

И именно поэтому я лишь упомянул такую возможность, но не остановился на ней, не так ли?

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
14
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта