|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
Приведите 10 примеров непереносимого кода05.06.2009, 23:53. Показов 14955. Ответов 53
Метки нет (Все метки)
Задача:
Приведите 10 различных примеров непереносимого кода на С++. Ну первый пример сразу мне бросился в глаза,при регистрации на форуме.(Если я правильно понимаю смысл задачи)
0
|
||||||
| 05.06.2009, 23:53 | |
|
Ответы с готовыми решениями:
53
Море примеров кода! приведите примеры программ питона (не кода) |
|
|
||
| 08.06.2009, 12:29 | ||
|
Теперь по поводу изначальной постановки задачи. Возможно, что тут дело в терминологии, но на мой взгляд "непереносимый код" и "ОС-зависимый" ("CPU-зависимый") код - это всё-таки разные вещи, юридической различие между которыми я членораздельно объяснить не могу (из разряды "жо$ой чую, что литр, но доказать не могу"). Т.е. условно говоря, попытавшись перетащить линуховый код на винду, мы получим ошибку компиляции/линковки по причине того, что какая-то фича для данной ОС отсуствует. На мой взгляд, говорить о непереносимости можно тогда, когда у тебя нет физических проблем для переноса кода (например, с linux-i386 на linux-ia64 или linux-sparc). И именно в этом месте на реальном софте возникает куча гемора: - Код изначально был написан под 32-битную платформу, а потому на 64-битной платформе работает неправильно. Не потому, что он физически не можетработаь на 64-битной платформе, а птому что написан "неаккуратно" - т.е. в предположении неких 32-битных соглашений (например, размер int'а совпадает с размером указателя) - Код изначально был написан под little-endian, а потому неправильно работает на big endian'е. Не потому, что он физически не может работатьна big-endian'е, а потому что шла работа с битовыми образами значений, жёстко предполагающих, что у нас такой-то порядок расположения байтов в памяти Ну и тому подобное. Т.е. отсуствие чего-то в библиотеках на мой взгляд НЕ является непереносимостью, а является "ОС-зависимостью" и т.п.
1
|
||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 08.06.2009, 13:39 | |
|
Хм, вот я глянул в (драфт) действующего стандарта С (ANSI/ISO 9899-1999), и там тоже (6.5/3) есть аналогичное утверждение: "The grouping of operators and operands is indicated by the syntax."
Ну хорошо, тем не менее, к консенсусу о приоритетах операций мы все-таки пришли. Относительно переносимости: я вполне согласен с твоими доводами. Я, однако, все-таки добавил бы в понятие "непереносимого" кода еще и то, что ты называешь "ОС-зависимость" или "CPU-зависимость". Бо мне в последнее время приходится писать код под несколько различных аппаратных платформ, и я (к сожалению) по опыту знаю, что такое "взять уже готовую библиотеку в исходниках и всунуть ее в свой проект" - это легко только на словах и так оно кажется менеджерам..... а перелопачивать груду кода этак в полста десятков килострок - удовольствие много ниже среднего, да еще и ошибок насажать можно лехко.....Впрочем, все изложенное - это мое имхо, поэтому не настаиваю на своем утверждении. В остальном же консенсус достигнут
2
|
|
|
|
||
| 08.06.2009, 13:45 | ||
|
Почитал стандарт. В разделе 6.5 стандарта Си чётко описаны приоритеты всех операций. В Си++ прориоритеты нет ничего кроме фразы "The precedence of operators is not directly specified, but it can be derived from the syntax". Мы тут сидели и долго пытались втыкнуть, что же сие означает. Наткнулись на статью в википедии http://en.wikipedia.org/wiki/O... nd_C%2B%2B
Теперь более-менее в голове утряслось. В стандарте Си есть строгое понятие приоритета операций. В стандарте Си++ понятия приоритета операций как такового нет. Вместо этого говорится, что порядок вычислний следует из формального описания синтаксических правил языка. В указанной статье приводится пример конкретных синтаксических правил и объяснения, почему одно и тоже выражение в Си и Си++ трактуется по разному Добавлено через 5 минут 31 секунду
2
|
||
|
инженер-системотехник
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
|
|
| 08.06.2009, 14:27 | |
|
А чего ссылка ведет не на статью?
0
|
|
|
|
|
| 08.06.2009, 21:29 | |
|
Промазал. Ссылка
http://en.wikipedia.org/wiki/O... nd_C%2B%2B Добавлено через 6 часов 55 минут 39 секунд pragma, хорош на каждом посте "спасибо жать". А то я уже начинаю чувствовать, что где-то рядом штангенциркуль появляется
1
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
| 08.06.2009, 22:26 [ТС] | |
|
А кто такой штангенциркуль?
![]() P.S.Просто некоторые жалуются,что не жмут,вот и жму))
0
|
|
|
|
|||||||
| 08.06.2009, 23:25 | |||||||
![]() Добавлено через 25 минут 50 секунд Кстати, вот тебе ещё пример непереносимого кода
- little endian - когда младший байт значения находится по меньшему адресу (а старший - по бОльшему) - big endian - когда старщий байт значения находится по меньшему адресу Intel относится к little endian, а потому этот тест выдаст значения в таком порядке: 0x44, 0x33, 0x22, 0x11. SPARC (есть такой процессор) относится в big endian, и этот тест выдаст: 0x11, 0x22, 0x33, 0x44
1
|
|||||||
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
||||||
| 09.06.2009, 17:57 | ||||||
|
Вот пример:
Подробности тут: Сайт для экспериментов с программами (Интерпретатор онлайн)
0
|
||||||
|
|
||
| 09.06.2009, 18:01 | ||
|
1
|
||
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
|
| 09.06.2009, 18:04 | |
|
Понятно. Извини, не было времени пять страниц изучать. Спасибо за информацию.
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 09.06.2009, 18:48 | ||
|
А причина в том посте - не в компиляции, а в другом.
0
|
||
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
||
| 09.06.2009, 21:15 | ||
|
Evg уже писал что там стоит ограничение на некоторые системные вызовы. В часности - system("pause"). Без этого вызова - компилируется. За сим, как я уже писал, признаю свою ошибку. Но пост удалить нельзя.
0
|
||
|
|
|
| 17.09.2019, 11:01 | |
|
Ещё один случай - это наличие возможности работы по невыровненному адресу на конкретном процессоре. Пример тут: Сравнение строк в операторе Switch, пояснение тут: Сравнение строк в операторе Switch
0
|
|
| 17.09.2019, 11:01 | |
|
В чем разница двух примеров кода Приведите примеры кода с комментариями (asm или debug) приведите пример Приведите пример. Приведите пример Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли
Введение: Экологический рынок как игра с нулевой суммой
Традиционная экология долгое время. . .
|
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ
Введение: Синдром «цифрового учебника»
Современные большие языковые модели (LLM) обладают колоссальным. . .
|
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос.
Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех.
А широколиственный лес тоже имеет самую крутую биомассу.
То почему не возникло их симбиоза? Это. . .
|
|
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне.
Это уже новая модель, модель сукцессии грибной.
потоки фосфора, азота. Углерода.
5 видов организмов.
Я даже. . .
|
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ
Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
|
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем
Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026
. . .
|
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки
План доработки модели динамики микоризных симбиозов (EcM с гистерезисом)
Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
|