Re[11]: include guards
От: Андрей Тарасевич Беларусь  
Дата: 30.01.22 17:49
Оценка:
Здравствуйте, AeroSun, Вы писали:

AS>Здравствуйте, Андрей Тарасевич, Вы писали:


АТ>>Хедер — это некая внутренняя компиляторная сущность неизвестной природы, обозначаемая своим идентификатором. Использование идентификатора этой сущности в `#include <...>` приводит к замене данной директивы на содержимое хедера.


AS>Да нет же.


Я уже закрыл эту тему выше.

AS>Всё там известно и ясно любому


"Всё там известно и ясно любому" [x]

Мои ответы предназначены не для "любых", а для тех, кто хочет разбираться в тонкостях С и С++ ультравысоком уровне.

AS>кто хоть немного программировал на С++.


Это весьма характерный менталитет для "хоть немного программировавших на С++". Прямо по Дэннингу-Крюгеру. Надеюсь, что когда они побольше "попрограммируют на С++", понимания прибавится, убежденности поуменьшится.
Best regards,
Андрей Тарасевич
Отредактировано 30.01.2022 17:52 Андрей Тарасевич . Предыдущая версия .
Re[11]: Нужна ли защита от повторного включения
От: Андрей Тарасевич Беларусь  
Дата: 30.01.22 17:59
Оценка: -5 :))
Здравствуйте, AeroSun, Вы писали:

AS>Здравствуйте, Андрей Тарасевич, Вы писали:



АТ>>За использование голого `#pragma once` — без страховки через include guards — "библиотека с гитхаба" сразу идет ффтопку под взрывы гомерического смеха окружающих. Никому такая библиотека не нужна.


AS>

AS>`#pragma once` — это сейчас стандарт де-факто, include guards уже на полпути на свалку истории (вычищаются понемногу из легаси, ибо удобнее и есть уникумы которые умудряются разводить срач о code style как их "правильно" именовать :facepalm.
AS>Де-факто с++ поддерживает это (вся тройка компиляторов уже хрен знает сколько времени, а кто пользуется допотопными — это их личный выбор и личные проблемы, которые остальных не касаются)

Смех да и только. Никто и нигде не пользуется `#pragma once`, кроме зеленых пионэров, которые изначально скопипастили ее из методичики какого-то своего ПТУ. Но и они быстро избавляются от этой привычки. "Де факто"...

АТ>>Многие из них, возможно, даже в курсе, что `#pragma once` ничего не дает (по сравнению с include guards), но продолжают механически следовать карго-культу.


AS>Прагма даёт лаконичность, отсутствие необходимости думать как гварды называть + отсутствие срачей о их "правильном" именовании. Взамен этого гварды как раз ничего не дают — они и есть самый явный карго-культ


Еще раз: даже те, кто продолжает карго-культово копипастить `#pragma once` из файла в файл, делают это всегда в совокупности с include guards. Голая `#pragma once` — это сразу штамп "пионэрский овнокот" поверх репозитория. Рассказывать же участникам форума про обилие "пионэрскиого овнокота" на гитхабе не обязательно — все об этом и так знают.
Best regards,
Андрей Тарасевич
tide мем
От: Sm0ke Россия ksi
Дата: 02.02.22 15:00
Оценка:
Вы всё ещё используете #include ?
Тогда мы идём к вам!



Вот там уже никакие инклюд гварды будут не нужны.
Проблема что gcc have issues with them.
Wrong line numbers in errors. Etc.
Отредактировано 02.02.2022 15:02 Sm0ke . Предыдущая версия .
Re: tide мем
От: Sm0ke Россия ksi
Дата: 09.02.22 02:17
Оценка:
twi

Re[12]: Нужна ли защита от повторного включения
От: VladFein США  
Дата: 09.02.22 03:27
Оценка: +1
Здравствуйте, Андрей Тарасевич, Вы писали:

АТ>... Голая `#pragma once` — это сразу штамп "пионэрский овнокот" поверх репозитория.


А нету ли у Вас еще таких правил для штампов? Вроде TAB vs spaces? Curly brace placement?
Re[13]: Нужна ли защита от повторного включения
От: Андрей Тарасевич Беларусь  
Дата: 09.02.22 17:11
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, Андрей Тарасевич, Вы писали:


АТ>>... Голая `#pragma once` — это сразу штамп "пионэрский овнокот" поверх репозитория.


VF>А нету ли у Вас еще таких правил для штампов? Вроде TAB vs spaces? Curly brace placement?


Ой, да их тыщи! (спасибо за ваш хороший вопрос)

Но я не записываю, поэтому приведу лишь те карго-культы, что сразу приходят в голову, ибо встречаются с удивительным постоянством и выраженной сезонностью (читай: каждый год очередному набору "пионэров" раздают все те же методички):

1. Царь всех карго-культов: явное приведение типа на результат `malloc` в С коде
2. Указательная арифметика вместо <stdarg.h> (львовский политех, согласно расследованию ruSO)
3. Золотой фонд индийского программирования: формат `%[]s` в scanf
4. `int i = 0; for (i; i < 10; ++i)`
5. Когда нужно увеличить размер динамического массива, копирование данных из старого массива в новый почему-то делается через третий, специально выделенный временный массив.
6. Чтение файла `while (!f.eof()) { ... }` — "нас так учили"
7. ...
Best regards,
Андрей Тарасевич
Отредактировано 09.02.2022 17:35 Андрей Тарасевич . Предыдущая версия . Еще …
Отредактировано 09.02.2022 17:29 Андрей Тарасевич . Предыдущая версия .
Re[14]: Нужна ли защита от повторного включения
От: Shtole  
Дата: 09.02.22 17:31
Оценка:
Здравствуйте, Андрей Тарасевич, Вы писали:

АТ>карго-культы


Какой смысл вкладывается в словосочетание?

Земляные самолёты не летают, а упомянутые библиотеки были так мне нужны, что кушать не мог. Не говоря уж про написание программ в Студии.
Do you want to develop an app?
Re[15]: Нужна ли защита от повторного включения
От: Андрей Тарасевич Беларусь  
Дата: 09.02.22 18:40
Оценка:
Здравствуйте, Shtole, Вы писали:

S>Здравствуйте, Андрей Тарасевич, Вы писали:


АТ>>карго-культы


S>Какой смысл вкладывается в словосочетание?


Традиционный. Слепое следование/копирование некоей последовательности действий, без понимания ее семантики. Одним из наиболее распространённых вариантов карго-культа в программировании является выполнение ненужных (читай: ритуальных) действий в совокупности с нужными, сопровождаемое религиозными по своей сути опасениями вида "я не знаю, зачем я это делаю, но я всегда так делал ("нас так учили", "все так делают" и т.п.) и боюсь, что без этого все сломается".
Best regards,
Андрей Тарасевич
Re[16]: Нужна ли защита от повторного включения
От: Shtole  
Дата: 09.02.22 19:01
Оценка:
Здравствуйте, Андрей Тарасевич, Вы писали:

АТ>>>карго-культы


S>>Какой смысл вкладывается в словосочетание?


АТ>Традиционный. Слепое следование/копирование некоей последовательности действий, без понимания ее семантики. Одним из наиболее распространённых вариантов карго-культа в программировании является выполнение ненужных (читай: ритуальных) действий в совокупности с нужными, сопровождаемое религиозными по своей сути опасениями вида "я не знаю, зачем я это делаю, но я всегда так делал ("нас так учили", "все так делают" и т.п.) и боюсь, что без этого все сломается".


Традиционный смысл немного другой: вы построили самолёт из земли, а он не полетел. А вот если он вдруг взял и полетел, то это уже не карго-культ, а рабочая авиационная система, даже если вам не нравится эффективность/эстетика/что-то ещё.
Do you want to develop an app?
Re[17]: Нужна ли защита от повторного включения
От: Андрей Тарасевич Беларусь  
Дата: 09.02.22 19:20
Оценка:
Здравствуйте, Shtole, Вы писали:

S>Здравствуйте, Андрей Тарасевич, Вы писали:


АТ>>>>карго-культы


S>>>Какой смысл вкладывается в словосочетание?


АТ>>Традиционный. Слепое следование/копирование некоей последовательности действий, без понимания ее семантики. Одним из наиболее распространённых вариантов карго-культа в программировании является выполнение ненужных (читай: ритуальных) действий в совокупности с нужными, сопровождаемое религиозными по своей сути опасениями вида "я не знаю, зачем я это делаю, но я всегда так делал ("нас так учили", "все так делают" и т.п.) и боюсь, что без этого все сломается".


S>Традиционный смысл немного другой: вы построили самолёт из земли, а он не полетел. А вот если он вдруг взял и полетел, то это уже не карго-культ, а рабочая авиационная система, даже если вам не нравится эффективность/эстетика/что-то ещё.


Это какой-то уж очень узкоспециализированный смысл.

Карго-культ — бесполезное и бессмысленное копирование/подражание во всех их проявлениях.

Полетел или не полетел самолет — никакого значения не имеет. А вот обязательное закидывание резиновой галоши в нишу левого шасси (потому что у оригинала в левой нише тоже валялась кем-то забытая галоша) — это уже карго-культ.
Best regards,
Андрей Тарасевич
Отредактировано 09.02.2022 19:27 Андрей Тарасевич . Предыдущая версия .
Re: include guards
От: reversecode google
Дата: 09.05.23 17:44
Оценка:
народ на реддите опять начал)))

https://old.reddit.com/r/cpp/comments/13bxunj/include_guards_and_their_optimizations/
https://github.com/IncludeGuardian/multiple-inclusion-optimization-tests
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.