![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
т.е. прибавлять к указателю значение нельзя ? а если можно то какое ? Добавлено через 43 секунды естественно спрашивается в контексте все того же вышеприведенного примера.. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
Встречайте цирк с конями, на форуме наконец-то появился настоящий специалист! Старый Shaggie, как всегда, проморгал все важные события. Спасибо товарищам форумчанам, подсказали куда поглядывать.
Сыроежка, считать идеальным измученный годами, изменяющимися парадигмами, конкурентами, новыми веяниями и обратными совместимостями стандарт переусложнённого языка программирования - это просто верх садомазохизма! Впрочем, его в треде оказалось предостаточно... |
|||
|
||||
Сыроежка |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: 1 Всего: 1 |
Увы, приходиться уже в десятый раз повторять, что этот код некорректный, если значение указателя не выравнено по границе типа int. А Денич Ритчи заявляет еще более строго, что для этого типа должно быть выравнивание по границе слова. Вы хотя бы прочитали книгу Дениса Ритчи "Программирование на С" в разделе, называющемся примерно следующим образом "связь между указателями и целыми числами", если вы стандарт не читаете. Добавлено через 3 минуты и 5 секунд У меня такое ощущение, что вы, как и многие из здесь присутствующих, совершенно не адекватны, и приписываете мне то, что я не говорил. Я лишь сказал, что такой код, который здесь мусолят, некорректный и может привести к аварийному завершению программы на некоторых платформах. Он не удовлетворяет стандарту, не является, как говорится, implementation defined, а потому его поведение не предсказуемо. То есть это совершенно безграмотный код. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
Shaggie |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
А то как же! ![]() ![]() Обычно программисты не пишут некорректный код, который "может привести к аварийному завершению программы на некоторых платформах". Просто потому, что такой код сложен в чтении и чреват ошибками в дальнейшем. То есть попросту не нужен. Полезно уметь ценить своё время и время своих коллег. Однако мы не живём в идеальном сферическом вакуумном мире. Мы инженеры. Наша работа, работа профессионалов своего дела, - решать проблемы заказчика. Всё! Часто в условиях ограниченных ресурсов (времени, памяти, нервов). Хороший код - это такой код, который решает задачи 1) текущей работоспособности, 2) дальнейшей поддержки. Задачи бывают разные. Коллеги меня поймут, embedded программисты поймут в особенности. Дано: слабенький процессор, мизер памяти, приходится силой отвоёвывать каждый байт и каждый такт. В таких условиях код volatile
бьёт дуплетом - он 1) работоспособен, 2) поддерживаем (за счёт комментария. И хотя он очень низкоуровнев и не даёт описания проблемы, из-за которой пришлось применить данный хак, при этом даже в текущем виде заметно облегчает чтение кода). Использование подобного кода в мейнстримной разработке бессмысленно и вредно. Опытные товарищи, заметив "хакерский" код и не получив внятного оправдания его использования, применяют карательные меры со всей надлежащей суровостью. Краткие выводы по первым двум страницам темы: 1) такого рода код писать можно и в отдельных случаях он работает, 2) стандарт грозит пальчиком, 3) программисты всё это знают, сами так не пишут и других на это не одобряют, 4) но в случае необходимости трюки работают и помогают решить проблему. Краткие выводы по остальным страницам: 1) хамов никто не любит. |
||||
|
|||||
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Сыроежка, я тут подумал-подумал, а ведь получается, что Вы правы!
Я не понимаю этих людей, которые говорят о каком-то сферическом вакууме... Давайте рассмотрим абсолютно реалистичную ситуацию (это я не только к Вам, а ко всем). Дано (это предположение, все совпадения - случайны): 1. Допустим, в мессенджере QIP есть плагин для протокола ICQ, требующий реализацию в dll-ке такой ф-ции
Причём объявлена она без extern "C", и, соответственно, декорирована, т.е. изменить её интерфейс мы не можем. 2. В 0-м и в 42-м int'е протокола ICQ лежат требуемые для плагина данные. 3. Ваша и моя фирма делают реализацию такого плагина. Выглядят наши плагины абсолютно одинакого (во всяком случае в начале)
4. Но настаёт момент, когда ICQ меняет протокол (что скажете - сферический вакуум?), и теперь перед данными, которые шли и раньше добавляется один байт (допустим тип сообщения). На ICQ ни я ни Вы влиять не можем. На QIP тоже. Что делаю я ? Переписываю плагин:
Выводы (промежуточные): Что в активе у меня ? - мой плагин работает с новой версией протокола - я продал 1 млн. плагинов за 99 коп. за штуку Что у меня в пассиве ? - я написал некорректный код - я нарушил стандарт - меня неодобрят в W3C - мой код не будет работать на IBM mainframe и PIC-контроллерах - я не стал миллионером (99 коп. же) Что в активе у Вас ? - Вы не поступились принципами - Ваш код написан в полном соответствии со стандартом - Вы чисты перед W3C - Ваш плагин не будет падать на IBM mainframe и PIC-контроллерах Что в пассиве у Вас ? - Вас уволили Итого (актив:пассив) - у меня 2:5, у Вас 4:1 Выводы (окончательные): Вы абсолютно правы. Не слушайте этих неадекватных людей. Так держать!!! -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну тогда вопрос на засыпку, a что будете делать если надо, чтоб код также работал и на вышеперечисленных платформах ? ![]() ![]() Это сообщение отредактировал(а) mes - 15.7.2011, 08:47 |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
ещё раз перепишу плагин QIP'а для протокола ICQ для IBM mainframe и PIC-контроллеров:
IMHO замечательно получилось ![]() Это сообщение отредактировал(а) borisbn - 15.7.2011, 09:30 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Представьте себе - мне надо написать программу управления для стиральной машины (для блока управления стиральной машины). Я вооружился стандартами, поднатужился, и выдал на гора совершенство. Оно соответствует всем пунктам стандарта, в нем нет ни строчки кода, о которой стандарт говорит implementation dependent (не говоря уже о более крепких выражениях). Оно использует только стандартные С и Posix библиотеки, и вообще оно полностью соответствует тому самому 'сферическому коню в вакууме'.
Вопрос - если я откомпилю и запущу мою программу на PC, она превратится в стиральную машину? ![]() ![]() Добавлено через 10 минут и 10 секунд Кстати, вот замечательное описание стиля спора Сыроежки:
М. Жванецкий |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
вот чёрт. Видел же замечание, залез в первую попавшуюся доку, увидел
и всё равно лажанул :( исправил. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
однако.. ![]() мы за ценой не постоим © |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |