|
|
  |
Еще глюк кейловского компилятора |
|
|
|
Aug 31 2011, 06:25
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(richie @ Aug 31 2011, 10:08)  Лаконично и понятно будет другому человеку, и самому себе даже через несколько месяцев. Увеличение числа строк в 3 раза вы называете лаконичностью? Цитата(GetSmart @ Aug 31 2011, 10:08)  А привести чужие примеры такого кода можете? Что значит "чужие"?
|
|
|
|
|
Aug 31 2011, 06:30
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(sergeeff @ Aug 31 2011, 10:14)  Не приведет он таких примеров. Старый добрый VS 6.0: Код C:\my_proj\VC++\classtst\main.cpp(23) : error C2562: 'Options' : 'void' function returning a value Да, верно, в VC 6.0 тоже был такой глюк, но уже в VC 7.1 его исправили. AVR Studio тоже успешно компилрует такой код, при этом многие считают gcc за эталонный компилятор. Наконец, об этом напрямую написано в стандарте. Цитата(GetSmart @ Aug 31 2011, 10:26)  Чужие значит чужие. Меня не интересуют чужие программы. Цитата(GetSmart @ Aug 31 2011, 10:26)  На чём основано ваше заявление в конце первого поста? На стандарте Си. Если угодно, я покопаюсь и найду это место, но я точно знаю что оно есть, так как на эту тему несколько лет назад была дискуссия в rsdn.ru о компиляторе VC 6.0, после чего этот глюк исправили в VC 7.1.
Сообщение отредактировал 777777 - Aug 31 2011, 06:31
|
|
|
|
|
Aug 31 2011, 07:42
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(GetSmart @ Aug 31 2011, 11:38)  А что не в миллион? 1 больше 0 вообще в бесконечность раз. Код if(Command.Data[i++] >= ZOND_SIZE) { ErrOptions(); return; } или: Код if(Command.Data[i++] >= ZOND_SIZE) return ErrOptions(); Вместо одной строки четыре.
Сообщение отредактировал 777777 - Aug 31 2011, 07:43
|
|
|
|
|
Aug 31 2011, 08:11
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(777777 @ Aug 31 2011, 09:57)  На самом деле void function может возвращать void value, "возвращаемое" другой void функцией. Цитата(777777 @ Aug 31 2011, 10:30)  На стандарте Си. Это утверждение неверное. Во всяком случае, если опираться на стандарт C99: Цитата The (nonexistent) value of a void expression (an expression that has type void) shall not be used in any way Цитата A return statement with an expression shall not appear in a function whose return type is void. A return statement without an expression shall only appear in a function whose return type is void.
|
|
|
|
|
Aug 31 2011, 08:26
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 4-11-10
Пользователь №: 60 646

|
Цитата(777777 @ Aug 31 2011, 10:34)  Какие вы все нежные. А работать с алгоритмом рекурсивного спуска вам не приходилось? А что не так с читабельностью? Вы считаете более читабельной программу в которой в 3 раза больше строк? вы так говорите словно лишние строки кода увеличивают компилированный размер , и потому это весомо в рекурсивном алгоритме - на самом деле скомпилированный вариант будет такой же по поводу того что строк у вас в 3 раза больше - у вас программа состоит из таких блоков только ? и их у вас тысячи ? если нет , то не в 3 раза, а на две строки. И мне кажется согласятся все что ваш пример , это пример Bad Code Style , и лучше так не писать.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|