- 1
- 2
- 3
- 4
do
{
...
} while ((strcmp(input,"") != 0)); /* till end of string */
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+142
do
{
...
} while ((strcmp(input,"") != 0)); /* till end of string */
нашел в прошивке одного очень известного производителя сетевого оборудования, они так парсят команды, введенные пользователем
mittorn 21.05.2015 21:59 # 0
ivanria 21.05.2015 22:19 # 0
bormand 22.05.2015 06:09 # +3
Но в этом случае, наверное, и правда оптимизнётся в while (*input)
laMer007 22.05.2015 22:04 # +2
а настроение зависит от того как настроишь
guest 26.05.2015 12:58 # 0
bormand 26.05.2015 16:00 # 0
ivanria 26.05.2015 17:14 # 0
3_14dar 27.05.2015 16:09 # 0
bormand 27.05.2015 16:26 # +1
ivanria 27.05.2015 16:34 # 0
bormand 27.05.2015 16:35 # 0
ivanria 27.05.2015 17:12 # 0
TarasB 22.05.2015 10:04 # +1
ivanria 22.05.2015 10:13 # 0
TarasB 22.05.2015 10:25 # +1
Про ненужные вызовы я не понял - тут что, проблема с преферансом? Это сравнение делается при отрисовке экрана в каждом пикселе?
ivanria 22.05.2015 10:40 # 0
если так не нравятся строки, то запили собственный класс с конструктором и методами и сиди вызывай методы в каждом цикле, где достаточно просто написать for(; *input; input++)
TarasB 22.05.2015 10:56 # +2
В крестах я так и делаю. Тут кстати нормальный код.
> просто написать for(; *input; input++)
Что это за говнокод? Указатели какие-то ещё...
ivanria 22.05.2015 11:16 # +1
TarasB 22.05.2015 11:18 # +2
ivanria 22.05.2015 12:04 # +3
bormand 22.05.2015 12:18 # −1
Толстовато, конечно... Откуда у тебя в сишке классы? Но пародию на ООП на сишке таки можно замутить.
ivanria 22.05.2015 12:40 # 0
bormand 22.05.2015 12:51 # 0
laMer007 22.05.2015 13:41 # +3
TarasB 23.05.2015 00:05 # +3
TarasB 26.05.2015 12:08 # 0
defecate-plusplus 26.05.2015 12:35 # +2
ну и, наконец, что распидорасит, если сделать внутренний begin end во внешнем begin end?
TarasB 26.05.2015 16:04 # 0
в BEGIN добавь создание нового списка локальных переменных, в END уничтожение этого списка
1024-- 26.05.2015 16:51 # 0
kegdan 24.05.2015 00:39 # 0
laMer007 24.05.2015 13:42 # 0
Abbath 24.05.2015 14:04 # 0
dxd 22.05.2015 12:45 # +1
lorc 22.05.2015 18:31 # 0
laMer007 22.05.2015 21:23 # 0
lorc 22.05.2015 21:45 # 0
Abbath 22.05.2015 21:31 # 0
Из 80-го года.
laMer007 22.05.2015 22:03 # 0
Stertor 26.05.2015 01:09 # −1
TarasB 22.05.2015 12:47 # 0
bormand 22.05.2015 12:50 # +1
TarasB 22.05.2015 12:57 # 0
сишка даёт возможность на лезть в дерьмо, а жаба не даёт
laMer007 22.05.2015 21:22 # 0
Abbath 22.05.2015 21:32 # +1
laMer007 22.05.2015 22:02 # 0
Abbath 22.05.2015 23:21 # 0
zero-cost abstractions
move semantics
guaranteed memory safety
threads without data races
trait-based generics
pattern matching
type inference
minimal runtime
efficient C bindings
laMer007 22.05.2015 23:36 # 0
не возможно
Abbath 22.05.2015 23:39 # 0
laMer007 23.05.2015 10:54 # 0
defecate-plusplus 23.05.2015 11:20 # +1
ну охуеть теперь
laMer007 22.05.2015 13:00 # 0
TarasB 22.05.2015 13:19 # 0
Кстати там, где мне был нужен динамический полиморфизм, мне всё равно виртуальные методы не пригодились. Потому что мне нужны были не только виртуальные методы, но и виртуальные статические константы. Пришлось руками заполнять поля метаклассов.
laMer007 22.05.2015 13:21 # 0
TarasB 22.05.2015 13:22 # 0
и лишний вызов
laMer007 22.05.2015 13:24 # +1
laMer007 22.05.2015 13:23 # 0
ivanria 22.05.2015 14:01 # 0
laMer007 22.05.2015 22:06 # −1
>Зачем, я и так знаю основы.
Ты лучше не препирайся, а послушай девушку. Дело ведь говорит
Stertor 22.05.2015 22:58 # −1
p.s. въебал минус за то, что бросаешь тень на мораль холостяцкой жизни. главное - разными руками дрочить, а то член станет напоминать джойстик.
bormand 22.05.2015 11:25 # 0
laMer007 22.05.2015 13:04 # 0
bormand 22.05.2015 13:38 # 0
char buf[BUF_LENGTH];
int length;
}; Так что ли?
Как этот BUF_LENGTH выбрать? Что делать, если надо сохранить более длинннную строку?
laMer007 22.05.2015 13:41 # 0
Длина доступного в говносистеме пути помноженная на 2, например.
> Что делать, если строка длиннее?
Кричать "ах я лох, но почему же я не подобрал правильную длину строки для данного приложения" и скорее отправлять на мой фаллический счет на кайманах 300 грамм золота.
ivanria 22.05.2015 14:11 # 0
lorc 22.05.2015 18:34 # 0
struct string {
size_t len;
size_t maxlen;
char[1] data
} ;
а выделять так: malloc(sizeof(string) + real_size - 1);
Если надо более длинную строку - реаллок в зубы и вперед.
bormand 22.05.2015 19:38 # 0
Но laMer007 явно не это имел в виду. Тут же выделять и освобождать придётся.
lorc 22.05.2015 21:48 # 0
laMer007 22.05.2015 22:00 # 0
wvxvw 23.05.2015 22:36 # 0
Веревки (или Б-дерево) которые можно реализовать и на Си, т.как не нужно заранее знать размер строк, а можно выделять по мере необходимости, и реаллоков не будет с добавлением всего-лишь логарифмического фактора. При чем, возможен даже выигрыш при интенсивном копировании / конкатенации и т.п.
1024-- 22.05.2015 10:40 # +1
> И тогда этот код не надо будет менять.
Как удобно! В мире останется 4 неизменных строки, которые не полагались на \0.
Правда, остальные миллиарды строк всё же придётся переписать.
myaut 22.05.2015 10:25 # 0
TarasB 22.05.2015 10:34 # 0
1024-- 22.05.2015 10:43 # 0
myaut 22.05.2015 11:13 # 0
laMer007 22.05.2015 12:22 # +2
laMer007 22.05.2015 13:42 # 0
3_14dar 25.05.2015 23:39 # 0
ivanria 26.05.2015 17:15 # 0
3_14dar 30.05.2015 16:08 # 0