- 1
- 2
- 3
#ifndef _USE_MATH_DEFINES
#define M_PI 3.14159265358979323846
#endif
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−11
#ifndef _USE_MATH_DEFINES
#define M_PI 3.14159265358979323846
#endif
Нельзя было сразу M_PI проверять?
Xom94ok 09.09.2015 07:06 # +6
3_14dar 09.09.2015 07:07 # +2
3_dar 09.09.2015 21:43 # +1
3_14dar 09.09.2015 21:55 # +1
kegdan 09.09.2015 23:06 # −1
3_14dar 10.09.2015 00:31 # −1
kegdan 10.09.2015 00:34 # +2
>> kegdan 14 часов назад # 0
>> Развели тут - пидар, тридар...
3_14dar в http://govnokod.ru/18694#comment297735 написал:
>> 3_14dar 3 часа назад # +1
>> Был пидар, стал тридар?
11 часов разницы, Карл
3_14dar 10.09.2015 13:05 # +3
1024-- 09.09.2015 09:18 # 0
kegdan 09.09.2015 10:39 # +2
Vasiliy 09.09.2015 12:55 # +1
kegdan 09.09.2015 13:42 # 0
Vasiliy 10.09.2015 07:57 # 0
kegdan 10.09.2015 08:04 # 0
Vasiliy 10.09.2015 12:29 # 0
guest 18.09.2015 16:14 # +1
inkanus-gray 09.09.2015 23:17 # +2
kegdan 10.09.2015 00:04 # 0
3_14dar 10.09.2015 00:31 # 0
roman-kashitsyn 10.09.2015 12:18 # 0
TarasB 10.09.2015 16:56 # +2
roman-kashitsyn 10.09.2015 19:46 # +1
tetra_i_dar 10.05.2016 21:58 # +1
guest 10.05.2016 22:00 # +1
tetra_i_dar 10.05.2016 22:01 # +1
guest 10.05.2016 22:03 # +1
А ты?
tetra_i_dar 10.05.2016 23:35 # 0
3_dar 16.05.2020 23:11 # 0
KOPOHABuPYC 16.05.2020 23:28 # 0
TarasB 10.09.2015 12:13 # 0
Каждый раз надо в новом проекте прописывать дефины, которые я до сих пор запомнить не могу
_USEMINMAX или USE_MIN_MAX?
bormand 10.09.2015 19:52 # 0
3_14dar 11.09.2015 01:52 # −1
В вашей сраной студии нельзя сделать шаблон для новых проектов? Алсо студия для си же говно?
bormand 11.09.2015 06:01 # 0
Правда без визуал ассиста или решарпера для крестов у неё довольно убогий редактор - нету рефакторинга, нормальной навигации и т.п.
3_14dar 11.09.2015 06:24 # +1
Ctrl+click (перейти к определению) не работает? Бля, нахуй она нужна?
bormand 11.09.2015 17:00 # 0
3_14dar 11.09.2015 18:25 # 0
bormand 11.09.2015 21:53 # 0
Там ведь даже код внутри #ifdef серым подсвечивается, если он не будет компилироваться в текущей конфигурации.
3_14dar 11.09.2015 22:39 # 0
bormand 11.09.2015 23:37 # 0
3_14dar 11.09.2015 23:44 # 0
bormand 12.09.2015 00:06 # 0
3_14dar 12.09.2015 00:23 # 0
вовремя ты потер. Единорог работает под вижуалкой, а анализирует что хошь
Не повлияет этот ехал макрос через макрос на качество статического анализа IDe?
bormand 12.09.2015 00:36 # 0
Не совсем. У него подавление ложных сработок именно под вижуалку, её либу и их особенности заточено. Они там сами писали, что дохуя мусора выдаётся на совсем безобидных конструкциях, когда либц разбирали.
Макросы элементарно раскрываются. Трабла в том, во что они раскрываются. После них же остаётся куча мусора типа 1 == 1. И весь этот мусор как раз попадает в выхлоп анализатора. И надо все такие случаи для известных макросов давить. Для макросов от Майкрософта они это сделали. Для гццшных - нет. Так что на качество анализа влияет - больше ложного мусора в результатах.
Суть анализа же не в том, чтобы выбесить программера миллионом нахуй не нужных предупреждений. А чтобы среди них остались, по возможности, только реальные проблемы а не шлак от раскрытия макро и шаблонов.
3_14dar 12.09.2015 00:42 # −1
bormand 12.09.2015 00:54 # 0
3_14dar 12.09.2015 04:00 # 0
Ох еб, они там вручную расставляют костыли, где материться на определенные конструкции, а где нет аки мс в винде 3.1 с цивилизацией.
3_14dar 12.09.2015 04:06 # 0
Все что нужно знать о качестве статических анализаторов для C(++)
3_14dar 12.09.2015 00:26 # 0
как это понимать? Качество анализа практически не зависит от полноты разбора шаблонов, потому что мы их все равно не разбираем?
bormand 12.09.2015 00:47 # 0
3_14dar 12.09.2015 03:56 # 0
bormand 12.09.2015 07:22 # 0
Там шаблон будет уже не с утиной типизацией, а что-то типа параметр N должен удовлетворять концепту "целое число", а параметр T - концепту "объект, который можно скопировать". Ну и соответственно в момент описания шаблона компилятор проверит, что ты не делаешь с параметрами ничего лишнего, что не описано в этих концептах. А в момент подстановки проверит, что в качестве параметров не передали левую хуйню, не подходящую под концепт.
3_14dar 12.09.2015 07:30 # 0
bormand 12.09.2015 07:37 # 0
А шаблоны и так уже на уровне AST работают. Просто у них утиная типизация. Вот, к примеру: Когда компилятор читает описание шаблона, он понимает, что T - какой-то тип. И ничего больше о нём не знает. Кроме совсем базовых проверок тут ничего сделать нельзя (а вижуалка, емнип, нарушает стандарт и вообще на этой фазе нихуя не разбирает).
И вот я юзаю этот шаблон: Т.е. в текущей версии крестов это самая настоящая утиная типизация (в момент компиляции, конечно же). И в бусте вот это "у t нет метода size()" может вывалиться не на первом уровне, а где-нибудь на глубине в 50 шаблонов. Причём t будет не тем, что ты туда передал, а какой-нибудь неведомой ёбаной хуйнёй из 100500 шаблонов, параметризованных твоим типом. Из-за чего описание ошибки превращается в портянку на пару экранов, в которой хуй поймёшь че от тебя вообще хотят...
3_14dar 12.09.2015 09:01 # 0
>Из-за чего описание ошибки превращается в портянку на пару экранов, в которой хуй поймёшь че от тебя вообще хотят...
Как в питоне :) Ну только кода в нем меньше.
Не понял, а чем это отличается от генериков жавы? Что мешает посмотреть в typename?
bormand 12.09.2015 09:02 # 0
3_14dar 12.09.2015 20:36 # 0
А что сложного в разборе шаблонов-то? Это ведь как генерики в яве?
bormand 12.09.2015 20:48 # 0
В крестах же шаблон может раскрываться по-разному для разных типов. Т.е. для hui<int> будет генериться один код, а для hui<std::string> можно сделать совсем другой (специализация шаблонов).
roman-kashitsyn 12.09.2015 22:51 # +2
Есть даже компилятор, компилирующий ML в шаблоны
bormand 12.09.2015 22:57 # 0
Вот только гц не завезли...
3_14dar 12.09.2015 22:52 # 0
Но смысл генериков в том, что бы он раскрывался одинаково для разных типов и при этом проверял типы в статике, а в чем смысл шаблонов плюсов?
Т.е. там тоже вызываются какие-то методы переданного типа, но компилятор матерится, когда этот тип не может выполнить то, что хочет код с генериками.
bormand 12.09.2015 23:07 # 0
Генерик - одна обобщённая функция или один класс работающие для некой группы допустимых параметров (поэтому он и generic).
А шаблон это шаблон для генерации пачки функций или классов, по одной для каждого набора параметров.
P.S. Из-за внешнего сходства шаблонов и генериков жабистам и крестовикам довольно сложно въехать в противоположную концепцию...
3_14dar 12.09.2015 23:26 # 0
Но подожди.
>А шаблон это шаблон для генерации пачки функций или классов, по одной для каждого набора параметров.
По концепции ООП это разве не должно принадлежать к объекту? Или я фигню сморозил?
В жавке это просто решается - сигнатура определяется не только названием, но и списком параметров, т.е. функции с одинаковым именем для разных типов клепаются на ура. А в плюсах для этого запилили костыль в виде шаблонов? И я все равно не понимаю, что мешает в статике проверить, есть ли у подставляемого объекта нужный метод.
bormand 12.09.2015 23:49 # 0
В момент инстанциирования шаблона всё прекрасно проверяется. Проблема в том, что ошибка будет в духе "нету метода х у типа у при раскрытии шаблона ... дохрена строк..." И в том, что в момент описания шаблона нельзя узнать, есть ли нужный метод.
3_14dar 12.09.2015 23:57 # 0
bormand 13.09.2015 00:08 # 0
Вот и пишешь шаблон, который будет юзаться для большинства и специализации под частные случаи. Я х.з. как еще объяснить...
Проверки шаблонов всегда идут в статике. Но в момент описания шаблона ничего толком не проверить, т.к. параметры неизвестны, а концепты ещё не завезли. Большая часть проверок будет в момент инстанциирования шаблона, когда он уже раскроется под конкретные параметры (это все еще во время компиляции в статике).
Проблема то не в том, что компилятор в статике не видит ошибок. Всё он видит. Только пишет об этом километровые портянки из которых нихуя не понятно...
3_14dar 13.09.2015 00:24 # 0
И даже если сделать ее в статике - не лучше ли придумать интерфейсы, чтобы этой хуйни не было?
bormand 13.09.2015 00:37 # 0
3_14dar 13.09.2015 00:42 # 0
Интерфейс - это ведь не только список, но и контракт. Т.е. если вилка влезет в розетку - это еще не гарантирует, что сеть и прибор работают на одном напряжении.
P.S. http://lurkmore.to/_/118731#mws_i5CVAqm
inkanus-gray 14.09.2015 14:49 # 0
3_14dar 14.09.2015 15:05 # 0
inkanus-gray 14.09.2015 16:27 # 0
Vasiliy 11.09.2015 18:27 # 0
3_14dar 11.09.2015 18:31 # 0
chtulhu 11.09.2015 11:46 # 0
roman-kashitsyn 11.09.2015 12:04 # 0
С текущей политикой лицензирования - не уверен.
Да и CLion - тормозная шняга, на самом деле. На приличных проектах он люто, бешено тормозит. У нас мало кто может его использовать, даже с partial checkouts.
Vasiliy 11.09.2015 15:58 # 0
defecate-plusplus 11.09.2015 16:09 # 0
gostinho 08.07.2020 00:09 # +1
Rooster 08.07.2020 07:26 # 0
nemyx 08.07.2020 12:29 # 0
real_escape_string 15.07.2022 22:15 # 0
guest8 08.07.2020 13:24 # −999
chtulhu 11.09.2015 20:32 # 0
А что использовать то для крестов?
roman-kashitsyn 11.09.2015 20:37 # 0
Я пишу в Emacs на всём подряд. С учётом того, что разработка в осноном на удалённой машине, выбор не особо большой. Да и годы использования вызывают привыкание.
3_14dar 11.09.2015 21:28 # 0
Но зачем?
CHayT 12.09.2015 11:03 # 0
чтобы ryska grisar не проебали говнокоды и в интранет ходили ровно одним способом, а не кто как хочет
roman-kashitsyn 12.09.2015 15:22 # 0
Удалённая машина - это сервер без гуя с 64 ядрами и сотнями оперативы. Там стоит специфичная версия линупса, под которую компиляем код.
bormand 12.09.2015 15:24 # 0
roman-kashitsyn 12.09.2015 15:27 # 0
CHayT 12.09.2015 16:19 # 0
3_14dar 12.09.2015 20:35 # 0
roman-kashitsyn 12.09.2015 22:45 # 0
3_14dar 12.09.2015 22:50 # 0
roman-kashitsyn 12.09.2015 22:54 # 0
В общем, на сервере гораздо общепринятей и удобнее. Более того, в большинстве нормальных компаний (фб, гугль) нативный бэкэнд девелопят примерно также.
3_14dar 12.09.2015 22:59 # 0
Сколько людей в сумме пилят бекенд для фейсбука? И то, что даже для теста софт нельзя запустить на локальной машине - кагбэ минус.
inkanus-gray 14.09.2015 14:54 # 0
3_14dar 14.09.2015 15:05 # +1
guest 18.09.2015 16:18 # +1
MAKAKA 08.07.2020 13:25 # +1
nemyx 09.07.2020 11:17 # +1
gost 09.07.2020 12:16 # +1
TEH3OPHblu_nemyx 09.07.2020 12:59 # +1
guest8 09.07.2020 13:18 # −999
gost 09.07.2020 13:24 # 0
MAKAKA 09.07.2020 13:29 # −1
Desktop 09.07.2020 13:30 # 0
Vasiliy 14.09.2015 16:51 # 0
roman-kashitsyn 14.09.2015 18:46 # 0
3_dar 30.12.2021 23:00 # 0
guest6 30.12.2021 23:03 # 0
gEKA6PbCKuu_nemyx 31.12.2021 00:29 # 0
real_escape_string 15.07.2022 22:15 # 0
CHayT 31.12.2021 00:32 # 0
3_14dar 11.09.2015 21:29 # 0
3_dar 30.12.2021 21:53 # 0
bormand 30.12.2021 21:57 # 0
guest6 30.12.2021 22:05 # 0
Soul_re@ver 30.12.2021 22:28 # +1
guest6 30.12.2021 22:31 # 0
real_escape_string 15.07.2022 22:14 # 0
CBuHOCO6AKA 15.07.2022 23:51 # 0