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

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

23 ответов

18 просмотров

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

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

блин, прежде чем браться за кьют, изучайте 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

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта