LINUX.ORG.RU

[с++] .hpp

 


0

2

Когда-то прочитал, что реализацию функций, длинна которых не превышает 5 строк, можно пихать в заголовочные файлы. Кроме того, видел, что во многих проектах в .hpp пихают функции размером до 10 строк.
А что в заголовочные файлы кладете вы, кроме того, что перечислено в книге г-на С.?

Когда-то прочитал, что реализацию функций, длинна которых не превышает 5 строк, можно пихать в заголовочные файлы

Меньше читай всякой макулатуры.

anonymous
()

А что в заголовочные файлы кладете вы, кроме того, что перечислено в книге г-на С.?

Что ещё, кроме того, что «перечислено в книге г-на С.», туда можно положить? Не представляю.

OldFatMan
()

А что в заголовочные файлы кладете вы, кроме того, что перечислено в книге г-на С.?

Пипец товарищи, это точно лор, а не клуб онанимных прогрраммистов на с++ обсуждающих свои комплексы?

это почти как опрос: а вы в трусах член кладете вниз или в верх?

_________

//«wfrr: I will be banned.»

anonymous
()

А что в заголовочные файлы кладете вы, кроме того, что перечислено в книге г-на С.?


Что хотим, то и пихаем. Деление на заголовочные файлы и файлы с текстами программ по большей части условность.

delete83 ★★
()
Ответ на: комментарий от kermzyxer

Стараюсь избегать такой практики. Даже в случае 5 строк. Не так уж много таких «мелких» функций.

OldFatMan
()
Ответ на: комментарий от delete83

Что хотим, то и пихаем.

А потом сидим и разгребаем? =))

OldFatMan
()

Осмелюсь предложить Вам ознакомиться с содержимым STL. Эта библиотека вся в заголовочных файлах находится.

anonymous
()
Ответ на: комментарий от CrossFire

Я не пишу никаких реализаций в хеадерах, потому как это бардак.

А с хедером включаете дополнительный файл? Или просто застряли в 80-х?

Begemoth ★★★★★
()

За нешаблонный код в hpp надо не иначе как убивать

yoghurt ★★★★★
()

Реализация в хидере пишется для шаблонов или для инлайности.

panter_dsd ★★★★
()
Ответ на: комментарий от stack_protector

В C++ куда не пихай реализацию — все равно бардак будет.

Не будете ли Вы столь любезны, чтобы изволить утрудить себя аргументированием данной позиции? Если Вас это не затруднит, конечно.

anonymous
()
Ответ на: комментарий от stack_protector

В таком случае «бардак» и «хаос» лучше всё-таки сокращать по возможности.

OldFatMan
()

Когда-то прочитал, что реализацию функций, длинна которых не превышает 5 строк, можно пихать в заголовочные файлы

Ужас. В заголовочных файлах должны лежать прототипы ф-й.

f1xmAn ★★★★★
()

методы класса, имеющие реализацию в объявлении класса (читай хедере) автоматически инлайнятся, даже если спецификатор inline не указан явно

marvin_yorke ★★★
()
Ответ на: комментарий от kermzyxer

Против inline-функций возражений нет. Если это нечто вроде:

inline bool is_asshole( int user_id ) { return (user_id == ASS) ? true : false; }

то пусть себе торчит в определении класса в .hpp.

OldFatMan
()

А если не определить функцию как inline, то при множественном включении в разные модули будут ошибки?

note173 ★★★★★
()
Ответ на: комментарий от OldFatMan
inline bool is_asshole() const { return (m_user_id == ASS); }

fixed

anonymous
()
Ответ на: комментарий от note173

А если не определить функцию как inline, то при множественном включении в разные модули будут ошибки?

Будут, если в анонимный неймспейс не затолкаешь. Что, кстати, довольно полезный приём ;)

const86 ★★★★★
()

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

А вообще дело вкуса. Вон у меня щас в тестовой программе один хидер и есть - .cpp было лень писать, все равно там все одним куском ходит и будет ходить.

Крики неасиляторов про бардак в С++ умиляют... ;-)

AIv ★★★★★
()
Ответ на: комментарий от kermzyxer

А оно само так иногда получается. Все таки неявно предполагается, что хидер можно включать в любое количество модулей любое кол-во раз.

AIv ★★★★★
()

Хидеры по возможности должны описывать только интерфейс.

r2d2
()
Ответ на: комментарий от AIv

Крики неасиляторов про бардак в С++ умиляют... ;-)

В с++ не бардак, а бордель с возможностью разместить полнофунциональную вагину вместо замочной скважины.

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

_________

//«wfrr: I will be banned.»

anonymous
()
Ответ на: комментарий от anonymous

Standard Template Library как бы намекает на то, что это либа темплейтов. А темплейты надо в хедерах реализовавыть как бэ(для либ).

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

Давай например возьмем не б-г угодный C#, в котором полноценные темплейты, которые можно компилять. А не как у вас - даже совместимости между компиляторами нет.

_________

//«wfrr: I will be banned.»

anonymous
()
Ответ на: комментарий от anonymous

Ну возьмём, и? Причём тут темплейты C#?, если речь идёт про кактусы C++. Это первое.

Второе - в C# вопроса что пихать в хэдер нет по определению, т.к. самого понятия хэдера нету.

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

речь идёт про кактусы C++

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

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

Он там ненужен. Ибо reflection. Хидеры нужны были с Си, где метаинформации нет, в плюсах возник какойто RTTI но метаинформации о интерфйесах в бинарниках не возникло - полумеры, как итог осталися протухшие хидеры, но из-за темплектов поросли колючками. А феерична предкомпиляция хидеров ? Этож пестня.

Это все какбы намекает что лучше тужа ничего не писать и шаблоны не юзать.

_________

//«wfrr: I will be banned.»

anonymous
()
Ответ на: комментарий от anonymous

И не пиши на C++, кто-то заставляет? Вот сколько ты времени тут потратишь на то, чтобы объяснять свою ненависть или презрение к С++. У тебя что, сильная латентная любовь к плюсам, которой ты почему-то стесняешься и стараешься скрыть?

anonymous
()
Ответ на: комментарий от anonymous

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

Аминь. Я года 2 как ушёл нифих с C++ именно из-за проблем компиляторов и прелестей сборки цепепешных сорцов. Ушёл на C#, F# и python. Так что кушалс.

А феерична предкомпиляция хидеров ? Этож пестня.

Там сама по себе компиляция шаблонов это гимн удобства, особенно логи ошибок.

То, что темплейты C++ это та ещё сказка я согласен полностью.

Он там ненужен. *многа букоф*

Я это и так знаю. Не видел смысла расписывать.

шаблоны не юзать

А что, есть какие-либо вменяемые альтернативы коллекциям сделанным через темплейты в C++? Обычные массивы - это понятно, а если хочется динамического расширения? Плясать с void* или на каждый чих писать свой контейнер?

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

А что, есть какие-либо вменяемые альтернативы коллекциям сделанным через темплейты в C++? Обычные массивы - это понятно, а если хочется динамического расширения? Плясать с void* или на каждый чих писать свой контейнер?

Увы, сам знаешь что нет, так же как всякие оопешные затейливые финты без шаблонов плохоюзабельны. 8(

_________

//«wfrr: I will be banned.»

anonymous
()
Ответ на: комментарий от Absurd

какой-нибудь другой компилятор умеет линкером инлайнить?

cl.exe же.

LamerOk ★★★★★
()

C++ остался в 80-х годах. Убожество на убожестве. Волосатик прежде чем лямбды впихивать, сделал бы нормальную ссылочную модель с опциональной сборкой мусора. Мне просто страшно смотреть на звездочки рядом с классами. Вообщем пока нет вменяемого нативного языка. Разве что обрезанная java с gcj

anonymous
()
Ответ на: комментарий от anonymous

Ну так сделай идеальный язык, кто тебе мешает? Все только рады будут. Или ты только гавкать умеешь?

anonymous
()
Ответ на: комментарий от AIv

Крики неасиляторов про бардак в С++ умиляют... ;-)

Неосиляторы других языков орут что C++ такой хороший, потому что ничего другого и не знают.

stack_protector
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.