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

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

58 ответов

13 просмотров

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
Решение проблемы созданием другой такой же серьезн...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта