Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Крыша едет. как это?
Отправлено
mandigit
(85.141.183.246)
14 июля 2011, г. 01:18
borland c++ 6.0
switch - видно на картинке
компилятор тупо путает куда идти.
переходит на метку 10, когда в свитче четкая константа 13 указана
обычно компиляторам верю, но себя уже испроверялся - не въезжаю.
что не так?
Картинка:
http://imobot.ru/tmp/b2.gif
Составить ответ
|
Вернуться на конференцию
Ответы
Косяк раскрыт! УРА (дело как обычно в кривоватых руках, слеповатых глазах ну и еще несколько случайных факторов)
-
mandigit
(
пустое
, 14.07.2011, 21:30:39
85.141.183.246
)
Где же это он у тебя переходит на метку 10?! Он начинает сравнивать свитчевую переменную, которая у тебя константа 13, со всеми товоими метками и таким образом определяет, куда же ему идти и что делаь. Это абсолютно необходимый этап в жизни любого свитча. Начал свои сравнения он с 10, ему так удобнее, но тело метки 10, т.е. оператор брек он же не выполняет. Что же ты тогда талдычишь о переходе на метку 10? Все он делает формально правильно. Другое дело -неоптимально. Но, я полагаю он просто оптимальность потерял от изумления, увидев вместо переменной - константу 13. Он же не думал, что найдутся извращенцы, подсовывающие свитчу вместо переменной константу:-))
-
-=ВН=-
(
пустое
, 14.07.2011, 10:48:27
194.190.183.238
)
Это ты хорошо увидел :)) Возможно это ответ.
-
POV
(
пустое
, 14.07.2011, 15:23:14
78.31.77.123
)
Стыдитесь, поручик, какие еще "возможно" на ровном месте?!
-
-=ВН=-
(
пустое
, 14.07.2011, 15:27:27
194.190.183.238
)
Место ровное, наверно в документации даже утверждается про похуистичное отношение компилятора к такому коду в угоду оптимизации. Но таки не очевидно решение такое.
-
POV
(
пустое
, 14.07.2011, 15:50:51
78.31.77.123
)
Да ладно тебе теории на ровном месте разводить:-)
-
-=ВН=-
(
пустое
, 14.07.2011, 16:29:38
194.190.183.238
)
Да ладно тебе теории на ровном месте разводить:-)
-
-=ВН=-
(
пустое
, 14.07.2011, 16:29:13
194.190.183.238
)
Косяк свитча - обычное дело. Изменю оптимизацию. Вставь кусочек когда, проверь нет ли объявления переменых внутри свитча.
-
POV
(
пустое
, 14.07.2011, 08:34:55
78.31.77.123
)
еще один считающий что косяки компиляторов встречаются чаще чем косяки себя любимого))))
-
колян безпарольный
(
пустое
, 14.07.2011, 12:32:1
193.200.150.82
)
Хы, ню-ню. Я жу выклдывал тут кусок когда на 20 строчек. Косяка никт не нашел, однако не работало. Начало работать когда какие-то изменения внес в другйо части кода.
-
POV
(
пустое
, 14.07.2011, 14:07:34
78.31.77.123
)
Подобная херня была давным-давно в 3-ем борланде вроде бы:-) Тоже думал, что комилятор дурак. Оказалось - я. :-) А всего-то в scanf написал %X вместо %x .Думал, по аналогии с printf, ну какая хер принципиальная разница - X или x.? Оказалось - есть разница. X - большому требовался указтель на 32-х разрядную переменную, а x- маленькому - на 16-ти разрядную. У меня был естественно на 16-ти. А дальше все просто - что-то поправлю где-то, в совершенно левом месте, линкер разместит эту переменную в безобидном месте - и все пофигу, все проходит. А в следующий раз разместит ее в обидном месте - и привет при записи 32-х разрядного числа в нее портится что-то другое и все идет раком:-) Такой вот пример влияния упомянутого DASM-ом data alligment, случившейся из-за нежелания тщательно изучать матчасть:-))
-
-=ВН=-
(
пустое
, 14.07.2011, 15:03:3
194.190.183.238
)
у меня тоже были непонятные косяки со свичем, но это в Яре и всего 1 раз за 7 лет. Когда говорят "обычное дело" это значит появление косяка куда чаще.
-
колян безпарольный
(
пустое
, 14.07.2011, 14:39:25
193.200.150.82
)
Обычно дело - это значит что одинаковые траблы встречаются у кучи людей, т.е. достаточно регулярно. Просто со второго раз чел не спрашивает как быть, а перелопачивает кусок кода и всё само исправляется.
-
POV
(
пустое
, 14.07.2011, 14:45:8
78.31.77.123
)
y.-y. - выложи еще раз. И какой проц собсно ? 99 % таких ошибок связаны с data alligment
-
DASM
(
пустое
, 14.07.2011, 14:38:13
188.134.85.103
)
проц настольного компа. винда. компилятор борландовский.
-
POV
(
пустое
, 14.07.2011, 14:45:50
78.31.77.123
)
хотелось бы на собачку посмотреть...
-
DASM
(
пустое
, 14.07.2011, 14:50:14
188.134.85.103
)
Вот такой вот тупой кусок говнокода. Работает. А был момент не заходил в нужный case. Прошло само когда изменил что-то в совсем другом модуле.
-
POV
(5762 байт, 14.07.2011, 15:07:13
78.31.77.123
)
думаю тут надо всю прогу смотреть. В косяк компилера-линкера - не верю все равно
-
DASM
(
пустое
, 14.07.2011, 15:22:23
188.134.85.103
)
Косяк не в принице....
-
POV
(265 байт, 14.07.2011, 15:24:45
78.31.77.123
)
В подавляющем большинстве случАев они начинаются у не слишком грамотного писателя большой проги, а вовсе не у компилятора с линкером. :-)))
-
-=ВН=-
(
пустое
, 14.07.2011, 15:31:2
194.190.183.238
)
Да где ты видел массы профессиональных кодеров? Тут хоть десяток наберётся? Все самоучки и подавляющее большинство и думать об оптимизации не хочет. Медиатор для них - хероматнтия для гитары. Потому все надежды исключительно на продвинутость ЭВМых компиляторов. Благо ресурсы практически не ограничены.. есть где компиляторописателям размахнуться.
-
POV
(
пустое
, 14.07.2011, 15:49:0
78.31.77.123
)
Да ладно. Обычные ошибки писателей. Вызванные нежеланием изучать матчасть. В подавляющем большинстве случАев. :-))
-
-=ВН=-
(877 байт, 14.07.2011, 16:26:51
194.190.183.238
)
а как обьявлена vаr?
-
ы
(
пустое
, 14.07.2011, 22:25:12
217.118.66.49
)
и как ее тип трактуется в этом компилере?
-
ы
(
пустое
, 14.07.2011, 22:27:13
217.118.66.49
)
текстом код можно?
-
ы
(
пустое
, 14.07.2011, 01:53:24
217.118.66.83
)
Ответ:
-
mandigit
(185 байт, 14.07.2011, 07:46:21
85.141.183.246
)
Ничего ен имеет. разве что просто может выкинуть тот case, который эффектиа не имеет.
-
POV
(
пустое
, 14.07.2011, 14:23:59
78.31.77.123
)
если код и на самом деле такой, то нет никакой разницы между case 10 и case 13 - компилятор имеет право выполнить любую из этих веток, т.к. эффект в них ОДИНАКОВЫЙ.
-
A_R_V
(
пустое
, 14.07.2011, 09:47:48
172.20.20.23,87.117.1.141
)
пестетз, лезть в то что накомпилено писишными сями это очень тяжелая форма.....
-
колян безпарольный
(554 байт, 14.07.2011, 01:37:14
193.200.150.82
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru