Правильный хедер всегда защищен от повторного компилирования. Типа #ifndef heder_h

то ... и только в этом случае идет компиляция?

23 ответов

17 просмотров

А если в разных объектных файлах?

Слава
А если в разных объектных файлах?

блин, прежде чем браться за кьют, изучайте C++ сначала. Разные объектные файлы компонуются в один исполняемый файл. И даже если в разных объектных файлах одной программы определены одинаковые функции, то линковщик будет ругаться при сборке исполняемого файла

Слава
а мне зачем об этом пишешь?

ну так а что за вопрос: а если в разных объектных файлах? Я ведь и написал, что в разных

а хедер и не компилируется ж

ifndef это защита при компиляции одного объектного файла

Michael Chambers
а хедер и не компилируется ж

компилируется. Но компиляция объявления и определения даёт разные результаты

Sergey eSKon
компилируется. Но компиляция объявления и определе...

тогда вы что-то другое имеете ввиду под компиляцией...

Alexander-Koryagin Автор вопроса
Слава
А если в разных объектных файлах?

Я помещал некоторые служебные функции в хедер формы сбилдера и никаких дубляжей не было если был определен входной #ifndef... А хедер формы был во всех модулях этой формы.

Michael Chambers
тогда вы что-то другое имеете ввиду под компиляцие...

компиляция это создание объектного файла - ничего другого я в виду не имел

Sergey eSKon
глупейший совет, ну реально

А какие проблемы с инлайном?

Sergey eSKon
что "это"?

то что текстовые файлы компилируются

Слава
А какие проблемы с инлайном?

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

Sergey eSKon
то есть вы пишете очень сложную функцию, которая в...

Вы наверное инлайн со статик перепутали

Слава
Вы наверное инлайн со статик перепутали

блин, ребята, вы серьёзно? Ну откройте справочник любой, не позорьтесь

Sergey eSKon
блин, ребята, вы серьёзно? Ну откройте справочник ...

It has the same address in every translation unit. https://en.cppreference.com/w/cpp/language/inline

Sergey eSKon
и?

Функция имеет один и тот же адресс во всех единицах трансляциях -> в исполняемом файле она одна лежит, а не много на каждую единицу трансляцию. Или это сложно осознать?

Sergey eSKon
то есть вы пишете очень сложную функцию, которая в...

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

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

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

Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
И? Все равно глазами проверять надо каждое поле
Andrii Kurdiumov
4
Ну есть у нас десяток компаний которым надо. Остальным то зачем?
Andrii Kurdiumov
4
что значит рваность? фргаментированость?? для лох эт нормальное состояние. там сжатие редкое явление
Mikhail Lomonosov
1
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
9
Карта сайта