![]() |
Модераторы: bsa Страницы: (9) Все « Первая ... 4 5 [6] 7 8 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
при этом платформазависиммые не только внешние вызовы, но размеры типовов, а также их представление.. да если не на что зависимое код не опирается, он конечно же переносим.. но встает вопрос, в чем тогда преимущество этого языка ?
Вы подменяете понятия, вводя всех и себя в том числе в заблуждения.. т.е. Вы счиатаете что если у языка семантика одна и та же на разных платформах, то корректная программа (по стандарту) будет выдавать абсолютно один и тот же результат ?
так кто то пару постов назад призывал думать широко..и что же ?! сами наступили на те же грабли ?! есть платформы на которых писать на (классическом) си не получится ![]() Размер не определяет, а выравнивание определил ?! хотя нет уже вы смягчили слово, теперь он "предполагает".. хотя вот откуда кратность взялась ?! а так Вы частично правы.. да стандарт опреляет и размер типов и их выравнивание.. только это уже другой стандарт.. ![]() |
||||||
|
|||||||
Сыроежка |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: 1 Всего: 1 |
У меня такое впечатление, что вам очень тяжело связать вместе пару фраз! Вы спрашиваете, в чем преимущество С? Я вам ответил, что он играет роль универсального языка ассемблера высокого уровня для любой платформы. А вы, как говорится, смотрите в книгу и видите фигу. Цитата(Сыроежка @ 8.7.2011, 17:45 ) C/С++ предполагают,что целые числа выравнены в соответсвии с кратностью их размеров[/B] . Почему это не прописано? Да просто потому, что стандарт не определяет размеры целых чисел. Размер не определяет, а выравнивание определил ?! хотя нет уже вы смягчили слово, теперь он "предполагает".. хотя вот откуда кратность взялась ?! Да, размер не определяется, а выравнивание определяется. В стандарте С даже спциально есть определение понятия выравнивания. Не догадываетесь, для чего это нужно? А все очень просто. Это нужно для арифметики с указателями. Только и всего. Добавлено через 9 минут и 49 секунд Да, если вы используете ассемблер, то очевидно, что ассемблер на разных платформах разных. Так что странные у вас взгляды. Стандарта - это как раз "пуп земли"! Потому что если язык не удовлетворяет стандарту, то значит вы говорите о чем-то другом, но не о языке С или С++. То есть ваши фантазии по поводу языка к самому языку никакого отношения не имеют. Более того как раз требование к кмопилятору, чтобы он имаксимально удовлетворял стандарту, является основным тербованием к компиляторам у профессионалов. Иначе ваш код просто будет мало того, что не переносим, а вообще его поведение будет непредсказуемым. Поэтому всякое отклонение от стандарта вы используете, кк говорится, на свой страх и риск. Но страшнее всего то, что порой такие ощиьки, связанные с отклонением о стандарта при переходе с одного компилятора на другой или с одной платформы на другую, порой трудно найти. И тогда поведение программы становится таким, как будто бы на нее влияет погода за окном: сегодня программа работает так, как ожидалось, а завтра совсем по другому. И, как я отметил, такие ошибки очень трудно натйи. Просто вы, очевидно, не работали в крупных проектах, в которых число модулей, включая заголовочные файлы, превосходит 500. Вот тгогда бы я посмотрле бы, как бы вы искали ощибку, связанную с тем, что где-то в коде вы использовали конструкции, не соответсвутющие стандарту. Это только дял дилетантов, которые не понимают серьезность проблемы, станларт не является пупом земли. А фирмы, разработчики программного обеспечения, а также фирмы, занимающиеся разработкой компиляторв, поголовно состоят в комитетах по стандартизации. Потому что они понимают серьезность проблемы. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Сыроежка, пример.
приходит пакет данных, с заголовком:
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Мне легко, я пытался , чтоб Вы осознали Ваши тупики без моей подсказки .. Чтоб не распыляться, так как Вы все время избегаете целевых вопросов, уделяя внимания оффтопику, еще раз уточню: где в стандарте сказанно, что выравнивание не может быть равно 1 ? как стандартными средствами узнать выравнивание для нужного типа ? почему если выравнивание на платформе 1, нельзя использовать код из первых постов.. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Любой ? И iOS (на чём у них там - на процессоре Samsung кажется), Android, Windows Phone 7 ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 2 Всего: 10 |
bsa,
так же проблем не должно возникнуть? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Ну вот, только отлучился -- и пропустил такой знатный ср обсуждение.
Сыроежка, не стоит считать всех глупее себя, ошибаются все. У тебя есть похвальное стремление писать программы по стандарту -- это отлично, но реальная жизнь стандартом не ограничиваются. Разработчики компиляторов, предоставляя сотни расширений, делают это не от нечего делать. Всего лишь один пример -- синтаксис текущий стандарта никак не может не повлиять на видимость символов разделяемой библиотеки. Признай свою ошибку, и двигайся дальше. Хочется особо отметить не так давно пришедшего volatile -- так держать. |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
![]() -------------------- undefined |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
М. Жванецкий. XX Век (выдержка) |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Да уж
![]() Сыроежка Оставляешь впечатление человека, который вообще нихрена на C++ серьезнее чем Hello World не писал. Это сообщение отредактировал(а) azesmcar - 11.7.2011, 09:31 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
должно, если я пользуюсь не GCC или совместимым компилятором. И вообще, твой код нестандартен. А надо сделать стандартно. |
|||
|
||||
Сыроежка |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: 1 Всего: 1 |
И что из того, что разработчики делают сотни расширений?! Разве это оправдание того, что вы сами грубо нарушаете стандарт?! Не вижу абсолютно никакой логики в вашем высказывании. Есать лишь у вас желание любой ценой оправдать свое незнание стандарта. Только и всего. Тут вообще со стороны смешно выглядет ваше поведение в дискуссии. Вы с пеной у рта пытаетесь оправдать ничем не обоснованное грубое нарушение стандарта. И ради чего? Только ради того, чтобы не признавать свое незнание стандарта. ![]() Добавлено @ 15:38 Пакеты данных, очевидно, передаются по среде передачи упакованными. И их формат и выравнивание данных очень часто не соответствуют требованиям языков С/С++. Как это грамотно описать? Обычно проимзводят базировние этого пакет по указателю char *, а затем делают необходимые преобразования и переписывают данные в подготовленную структуру. Очень часто для этих целей используется стандартная функция memcpy для выполнения копирования данных из пакета в переменные программы определенного типа. Тут также стоит отметить, что в пакете целочисленные данные могут быть представлены в формате как big indian, в то время как на вашей платформе они представляются в виде little indian. То есть обычно в любом случае требуется преобразование. Это сообщение отредактировал(а) Сыроежка - 13.7.2011, 15:40 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
мне кажется Вы увлеклись рассматриванием отражения в экране.. ![]() позвольте узнать корректный аналог вышеприведенного кода.. научите, что там вместо +1 надо было написать.. ![]() |
|||
|
||||
Сыроежка |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: 1 Всего: 1 |
Очевидно, что до вас с первого раза не доходит. У данного некорректного кода есть лишь один аналог - это отсутствие этого некорректного кода. Надеюсь, еще через одну неделю вы не будете снова задавать этот вопрос. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |