- 1
#define CHK( x ) {do{if (x == MBRES_ERR){goto __gotoFAIL;}} while (FALSE);}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+58
#define CHK( x ) {do{if (x == MBRES_ERR){goto __gotoFAIL;}} while (FALSE);}
Из SDK корейского сканера
Soul_re@ver 08.08.2014 15:35 # +3
Использование FALSE вместо false в крестах тоже радует.
inkanus-gray 08.08.2014 15:41 # 0
bormand 08.08.2014 15:56 # +1
Да не кресты это. Это C/C++ (когда автор пишет на крестах как на си).
roman-kashitsyn 08.08.2014 16:04 # +3
Самое отвратительное сочетание
inkanus-gray 08.08.2014 17:01 # 0
kegdan 08.08.2014 17:04 # 0
inkanus-gray 08.08.2014 17:08 # 0
kegdan 08.08.2014 17:13 # −2
Psionic 08.08.2014 17:30 # 0
roman-kashitsyn 08.08.2014 17:35 # +2
Нет никаких проблем реализовать полноценную C++-обёртку (читай - с поддержкой RAII) над сишным апи и спокойно писать прикладуху на идеоматичном C++.
Я просто насмотрелся на проги, которые используют сырые низкоуровневые ресурсы и malloc/free/new/delete вперемешку с исключенями и goto. Это леденящий душу 3.14здец.
defecate-plusplus 08.08.2014 17:38 # +6
Psionic 08.08.2014 19:09 # 0
А какой в них смысл если доступны new/delete? Я бы вообще в свежий стандарт
чистого Си (если он выходит сейчас) бы перенес их вместе с пространствами имен и каким-то простейшим полиморфизмом для сишных функций.
bormand 08.08.2014 19:41 # 0
К примеру, если какой-то сишной либе нужно отдать указатель, который она потом освободит через free. Ну или наоборот - либа возвращает malloc'нутый указатель, который мне нужно будет освободить через free.
kegdan 08.08.2014 16:45 # 0
roman-kashitsyn 08.08.2014 16:47 # 0
myaut 08.08.2014 16:48 # 0
bormand 08.08.2014 17:11 # 0
kegdan 08.08.2014 16:48 # 0
Elvenfighter 08.08.2014 17:16 # 0
kegdan 08.08.2014 17:23 # 0
inkanus-gray 08.08.2014 19:57 # +2
kegdan 08.08.2014 20:01 # +3
Известны 10 преимуществ Паскаля перед Си
Я приведу только одно, но самое важное.
На Си вы можете написать:
for(;P("\n").R-;P("\ "))for(e=3DC;e-;P("_ "+(*u++/8)%2))P("| "+ (*u/4)%2);
На Паскале Вы НЕ МОЖЕТЕ такого написать
defecate-plusplus 08.08.2014 20:04 # +3
что это?
kegdan 08.08.2014 20:16 # 0
bormand 08.08.2014 20:52 # +2
Туз интов.
kegdan 08.08.2014 20:57 # +2
kegdan 08.08.2014 20:17 # +1
нашел православный вариант
bormand 08.08.2014 20:53 # 0
inkanus-gray 09.08.2014 15:02 # +1
Psionic 08.08.2014 23:01 # 0
kegdan 08.08.2014 23:03 # +1
Psionic 08.08.2014 23:23 # 0
kegdan 08.08.2014 23:35 # 0
А С с ООП так и вообще смотрится адово
guest 09.08.2014 12:25 # 0
Что дает сочетание максимального быстродействия рантайма, экономичности и безопасности.
roman-kashitsyn 09.08.2014 13:46 # +4
1. Универсальный механизм управления ресурсами - объекты + идиома RAII.
2. Встроенный функциональный язык для метапрограммирования с паттерн-матчингом - шаблоны. Если подсел на шаблоны, мир уже никогда больше не станет прежним.
3. Возможность выбрать стиль программирования, наиболее подходящий к задаче - процедурный, ООП, функциональщина, метапрограммирование. Можно сочетать.
4. Возможность напрямую дёргать системные вызовы и низкоуровневые сишные апи, не дожидаясь, пока их красиво обернут в популярной платформе. Особенно полезно в сочетании с пунктом 1.
5. Нет пауз gc. Возможность работы в условиях real-time.
6. Быстрый старт приложений.
kegdan 09.08.2014 14:17 # 0
2 А потом начинается шаблоноблядство - вообще хуй че прочитаешь
3 лучше иметь кошерный набор инструментов, чем один, который может все, в том числе и стрелять тебе по ногам, сношать тебя анально и течь
4 в резулятате чего ось ложиться на лопатки - ибо дергается за яйца без какой либо защиты (зато быстро)
5. По дефолту нет. А вообще можно подцепить
так о чем это я? о том, что язык полезен, но он полон подводных камней, и подходить к нему надо осторожно и в сознательном возрасте (не раньше 25 лет). Неоправданно высокий пород вхождения, монструозность и всеобьемнимость. Си гениален тем, что прост как 3 рубля, но эффективен и красив. А тут... печаль - тоска. Как по мне - так плюсы должны быть малопопулярны (как хаски), дабы люди, решившие на них кодить, понимали че это, и что язык этот - удел извращенцев и гиков.
Почему я ненавижу язык. люто, бегшено? - потому что во всех вузах (кроме ТГУ ибо у нах пох на чем сдавать) и полувузах его преподают как основной язык. Человек не знает что такое граф - но его уже садят на крестоблядскую машину. Это прискорбно
bormand 09.08.2014 14:28 # +4
Только у неосиляторов, которые все еще освобождают память вручную.
У меня в небольшом проектике было одно delete на 90+ классов, и то просто лень было выпиливать... И ничего не текло, да. А с move семантикой можно еще и кучу new убрать...
> преподают как основной язык
Уверен? Вроде в вузах преподают C/C++ (аля си с классами). И это прискорбно, да. Как раз из-за такого обучения проги у нубов текут как сучки...
kegdan 09.08.2014 15:05 # 0
1024-- 09.08.2014 15:12 # 0
kegdan 09.08.2014 15:14 # 0
Abbath 09.08.2014 14:31 # 0
kegdan 09.08.2014 15:04 # +1
bormand 09.08.2014 14:39 # +2
Если прога может взять и положить ось на лопатки - значит это была хуёвая ось (или просто ты купил мало оперативки и она упала в своп).
> дергается за яйца без какой либо защиты
Ты под досом что-ли работаешь? :)
1024-- 09.08.2014 14:48 # 0
bormand 09.08.2014 14:58 # 0
А баги в ядре и дровах они ведь на любые языки одинаково влияют. Сишка/кресты тут на равных со всеми остальными.
TauSigma 11.08.2014 16:14 # 0
Там букет разнообразных ароматов достигается уже после 2-3 недель реверсирования...
TauSigma 11.08.2014 16:11 # 0
Либо стало слишком много фиговых писателей...