|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
Приведите 10 примеров непереносимого кода05.06.2009, 23:53. Показов 14820. Ответов 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 | |
|
Помогаю со студенческими работами здесь
54
В чем разница двух примеров кода Приведите примеры кода с комментариями (asm или debug) приведите пример Приведите пример. Приведите пример Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|