Сейчас на форуме: Kybyx (+3 невидимых) |
eXeL@B —› Оффтоп —› С-- С С++ -> ... |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 04 марта 2016 12:14 · Поправил: VodoleY · Личное сообщение · #1 В общем. а хочу задать вопрос, который меня волнует уже давно. Видимо в основном это вопросы к гуру наСИльников. Где можно почитать/узнать классификацию СИ с ньюансами разных компиллеров. Т.е якобы стандарт есть.. но чтоб чтото на сях скомпилить местами этот секс с припрыжками. Или так.. как так кодить.. чтоб компилилось везде. ЗЫ. я по этой причине давно сижу на 6ой делфе. ибо совместимость снизу вверх там все еще актуальна.. ну почти.. в сях.. чтото совсем печально ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 04 марта 2016 12:27 · Личное сообщение · #2 VodoleY пишет: классификацию СИ с ньюансами разных компиллеров Нужно отдельно открывать документацию по каждому интересующему компилятору и смотреть интересующие моменты. VodoleY пишет: Т.е якобы стандарт есть.. но чтоб чтото на сях скомпилить местами этот секс с припрыжками Проблемы, когда используются системозависимые инклюды/типы/функции или собственные фишки компиляторов, также, компилятор запросто может не обладать всем набором фич, которые есть в стандарте, особенно в случае с С++ актуально... VodoleY пишет: Или так.. как так кодить.. чтоб компилилось везде. ifdef, использовать библиотеки, проблема как и во всех относительно низких языках - стандартная библиотека мало чего дает VodoleY пишет: ибо совместимость снизу вверх там все еще актуальна.. ну почти.. в сях.. чтото совсем печально У того же gcc есть флажки компиляции для поддержки старых стандартов. Другое дело зачем вам совместимость, например, с C89... |
|
Создано: 04 марта 2016 12:50 · Поправил: VodoleY · Личное сообщение · #3 |
|
Создано: 04 марта 2016 14:47 · Личное сообщение · #4 Совсем недавно искал почему один и тот же участок кода правильно работал в Windows, но неправильно в OSX. Причина - разный размер wchar_t. ----- http://ntinfo.biz | Сообщение посчитали полезным: DenCoder |
|
Создано: 04 марта 2016 15:49 · Личное сообщение · #5 |
|
Создано: 04 марта 2016 16:07 · Поправил: HandMill · Личное сообщение · #6 Флодотопик какой-то: один_ЯП_name vs другой_ЯП_name и никакой конкретики о проблемах. ТС, что ж у тебя случилось то такого что язык тебе чем-то неугодил? Напиши что именно у тебя не получается - может сможем помочь чем-то. ----- все багрепорты - в личные сообщения | Сообщение посчитали полезным: Dart Sergius, hors |
|
Создано: 04 марта 2016 16:40 · Поправил: hors · Личное сообщение · #7 Kaimi пишет: В общем если хочется кроссплатформенности без заморочек, то либо скриптовые языки, либо Java, C# и прочее На С/С++ прекрасно пишутся кросплатформенные приложения. Kaimi пишет: С little endian - big endian еще веселее. Если программа напрямую не работает с raw data, то разница между BE и LE незаметна. ----- http://ntinfo.biz | Сообщение посчитали полезным: HandMill |
|
Создано: 04 марта 2016 17:02 · Личное сообщение · #8 HandMill пишет: что ж у тебя случилось то такого что язык тебе чем-то неугодил? VodoleY пишет: чтоб компилилось везде. Из знакомства с гитхабом,... бывает частенько, что сорцы с плюсов хер слинкуешь...))) Может это имелось в виду. В дельфях с подобным конечно разбираться проще, дпр пас и форма. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 04 марта 2016 17:07 · Личное сообщение · #9 |
|
Создано: 04 марта 2016 20:55 · Поправил: VodoleY · Личное сообщение · #10 ну вот первая пачка флуда прошла. вопросы к ТС? я повторюсь. почему многие любат асм.. byte word dword qdword.. и звиздец.. какие нафиг лишние типы переменный? накой они в пень нужны? во вторых.. с++ ... ну это отедльная тема.. многие пользуют фичи гибкости? создавая себе гимор переносимости.. создавая нечитабельный гуан? выигрывая 3 строчки кода.. проигрываеш в переносимости и читабельности... Добавлено спустя 2 минуты добавлю.. это же гасается делфей 8 и высше.. нахер новые конструкции налипили.. хз.. толку от них ноль.. пользы так же.. бреда.. 2 вогона ЗЫ. повторяюсь.. есть диалект си .. желательно со средой, максимально портабельный, и желательно с описание отличий от других? или каждый частный случай частное говно? Добавлено спустя 7 минут я тут с недельку назад.. пытался скомпилить DosBox.. и охерел.. надо еще 11 либ тащить.. причем.. отключения либ.. не означает что ты их не должен иметь.. в конце концов.. отреверсил работающий dosbox сделал логирующий скрипт.. и с матами.. удалил студию.. или это только у меня так все через жопу? ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 04 марта 2016 21:23 · Личное сообщение · #11 VodoleY пишет: многие пользуют фичи гибкости? смотря что пишу. VodoleY пишет: создавая себе гимор переносимости.. создавая нечитабельный гуан? гемора переносимости не ощущаю. Переносимость между чем нужна? VodoleY пишет: есть диалект си .. желательно со средой, максимально портабельный, и желательно с описание отличий от других? плюсы и Qt. VodoleY пишет: я тут с недельку назад.. пытался скомпилить DosBox.. не совутею vbox компилить :D Там ещё хуже. |
|
Создано: 04 марта 2016 22:01 · Личное сообщение · #12 VodoleY пишет: byte word dword qdword.. и звиздец.. какие нафиг лишние типы переменный? накой они в пень нужны? До тех пор пока не требуется писать свой крузис3 кроссплатформенный - да, не нужны. Или взять скажем fastcall под win и nix, нормально, кроссплатформенно? VodoleY пишет: я тут с недельку назад.. пытался скомпилить DosBox.. и охерел.. надо еще 11 либ тащить.. причем.. отключения либ.. не означает что ты их не должен иметь.. в конце концов.. отреверсил работающий dosbox сделал логирующий скрипт.. и с матами.. удалил студию.. или это только у меня так все через жопу? Не понимаю суть претензий. Хотите язык, где в стандартных библиотеках есть буквально все и ничего не требуется? Так не бывает, кто-то должен тащить гору абстракций для работы с конкретной ос/архитектурой. Естественно библиотеки, естественно качество, переносимость и простота библиотек на совести авторов. Сами же говорите что у вас есть дельфи6 который отлично подходит для ваших типичных задач. У кого-то это не так. Причины разные. Дельфи6 тоже не эталон переносимости. Проблемы сборки сишных чего-то там - это обычно именно проблемы сборки/инклюдов, а не самого кода. С тем же успехом можно взять код на масм дергающий винапи, а потом говорить что ассемблер не переносим и не компилируется под линуксом, ну да, естественно. |
|
Создано: 04 марта 2016 22:26 · Личное сообщение · #13 |
|
Создано: 06 марта 2016 14:01 · Поправил: dosprog · Личное сообщение · #14 VodoleY пишет: ну почти.. в сях.. чтото совсем печально Никаких проблем (ну почти что). Есть справочник от М.И.Болски ("Радио и связь", 1988) "Язык программирования Си" - не выходя за его рамки всё получается вполне переносимое. Но это командная строка со стандартным вводом-выводом. Этого не всегда бывает достаточно. Kaimi пишет: uint8_t, uint16_t Это на самом деле <unsigned char> и <unsigned short int>. Вот так она и теряется, переносимость. Просто в используемом комплекте компилятора где-то в хидерах упомянуто: #define uint8_t unsigned char #define uint16_t unsigned short int -- Или то же самое через typedef. Никого ни к чему не обязывает кагбэ. |
|
Создано: 06 марта 2016 15:09 · Личное сообщение · #15 Спасибо, капитан. Ага, а потом, например, int оказывается двухбайтовым, когда хотелось 4 байта и все становится просто замечательно. Или изначально писали под 64 бит, а тут опа и решили под 32 собрать. Не, оно понятно, что в первую очередь вопрос к разработчику и его знаниям и качеству кода, но указание конкретных размеров много где может пригодиться |
|
Создано: 06 марта 2016 15:48 · Поправил: dosprog · Личное сообщение · #16 Kaimi пишет: Спасибо, капитан. Ага, а потом, например, int оказывается двухбайтовым, когда хотелось 4 байта и все становится просто замечательно. Внимательно читаем. Там есть словечко <short> - "короткое". short - всегда двухбайтовый WORD. Как в DOS-16, так и в WIN-32. Это же азбука.. Простой int в DOS-16 это двухбайтовый WORD, а в WIN-32 это 4х- байтовый DWORD. Тип int (обычный) имеет по определению размер регистра целевой машины. Для насильственного превращения в DOS-16 числа int в четырёхбайтовое нужно назвать его как long int. Или просто long. В WIN-32 никаких уточнений не требуется - там int это DWORD (4 байта). |
|
Создано: 06 марта 2016 15:57 · Личное сообщение · #17 |
|
Создано: 06 марта 2016 16:05 · Поправил: dosprog · Личное сообщение · #18 Archer пишет: Строго говоря, стандарт ограничивает его размер снизу, минимум 16 битов, но сверху нет. Честно говоря, не слышал о таком. Вот довольно подробно об этом в педивикии: Многие языки программирования предлагают выбор между короткими (англ. short), длинными (англ. long) и целыми стандартной длины. Длина стандартного целого типа, как правило, совпадает с размером машинного слова на целевой платформе. Для 16-разрядных операционных систем — этот тип (int) составляет 2 байта и совпадает с типом short int (можно использовать как short, опуская слово int), для 32-разрядных операционных систем он будет равен 4 байтам и совпадает с длинным целым long int (можно использовать как long, опуская слово int), и в этом случае будет составлять 4 байта. Короткое целое short int, для 16-разрядных операционных систем, 32-разрядных операционных систем, и для большинства 64-разрядных операционных систем составляет — 2 байта. Также в некоторых языках может использоваться тип данных двойное длинное long long, который составляет 8 байт. Эти соглашения поддерживаются повсеместно, по моим наблюдениям, - и это хорошо. Archer пишет: В таких случаях уже надо пользоваться новым стандартом и новыми типами фиксированного размера. "Новые" типы обычно описаны в хидер-файлах через стандартные. Это бывает удобно и не вызывает сложностей, как правило. Обычно это BYTE, WORD, DWORD и QWORD. (Они считаются беззнаковыми). А в общем, дело вкуса. Серьёзные траблы возникают, как правило, с адресной арифметикой, особенно при переносе программы из 32-бит в 16-бит систему. Но это отдельная тема .. И потом - интересует же "Стандартный Си".. |
|
Создано: 06 марта 2016 17:01 · Личное сообщение · #19 dosprog пишет: Внимательно читаем. Там есть словечко <short> - "короткое". short - всегда двухбайтовый WORD. Как в DOS-16, так и в WIN-32. Это же азбука.. Доводилось портировать алгоритмы из dos софта под современные системы, и с жестко прописанными размерами многих проблем не возникло бы. dosprog пишет: В WIN-32 никаких уточнений не требуется - там int это DWORD (4 байта). Это конечно хорошо. Просто иногда приходится писать код который должен одинаково собираться и работать под win, nix запущеных на интелах, армах и спарках. Мне как-то проще явно размер задавать. |
|
Создано: 06 марта 2016 17:06 · Поправил: dosprog · Личное сообщение · #20 Kaimi пишет: Мне как-то проще явно размер задавать. Так на здоровье - есть typedef, как раз для этой цели. Это во-первых - а во-вторых советуют не упоминать в таких случаях int, а писать явно - short или long, Это и есть явное задание размера. Ну, можно ещё для удобства себе настроить такое: typedef short int16 typedef long int32 - Это обычно уже сделано в заголовочных файлах стандартной библиотеки используемого компилятора. Эти все uint16_t etc. это оно и есть. VodoleY пишет: ifdef, вот за эту конструкцию.. я б чесно.. просто расстрелял На самом деле в этом ifdef как раз и спасение. Иначе бы вообще ничего не получалось. |
|
Создано: 07 марта 2016 07:15 · Поправил: VodoleY · Личное сообщение · #21 ну вот мы все ближе подходим к сути вопроса изначального. Существует ли сводная гдето сводная документация, охватывающая разницу между диалектами СИ и вариации и способы решения проблем, совместимости(я о размерности данных даже не говорю, вопрос скорее к синтаксическим конструкциям) ЗЫ. вот года 2 назад я пытался медиану (дизасм) засунуть в QT. вот не смотря на уверения int-а.. у меня почемуто не получилось скомпилить ее. ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 07 марта 2016 08:26 · Личное сообщение · #22 Нет никаких диалектов! Есть стандарт (несколько: C++02, 98, 11, ...) в различных компиляторах С++ (gcc/icc/ms) есть различия в виде самовыдуманных конструкций, не относящихся к стандарту. Пишите по стандарту и будет компилироваться под любую поддерживаемую платформу. | Сообщение посчитали полезным: Getorix |
|
Создано: 07 марта 2016 10:48 · Личное сообщение · #23 |
|
Создано: 07 марта 2016 11:15 · Поправил: dosprog · Личное сообщение · #24 awlost пишет: в различных компиляторах С++ (gcc/icc/ms) есть различия в виде самовыдуманных конструкций, не относящихся к стандарту. Ну да, - причём эти выдуманные удобняшки реализованы пользовательскими средствами в хидер-файлах - с помощью typedef'ов и define'ов. Концы можно найти, короче, если сильно разозлиться. |
|
Создано: 07 марта 2016 11:32 · Поправил: VodoleY · Личное сообщение · #25 awlost пишет: в различных компиляторах С++ (gcc/icc/ms) есть различия в виде самовыдуманных конструкций, не относящихся к стандарту. ну вот я может все таки додавлю комьюнити.. и ктото даст ссылки на различия.. ибо главная проблема, это все таки юзать чужой код. и поэтому с этими самовыдуманными.. именно бороться и приходится ЗЫ. т.е еще раз повторяю вопрос. нет ли где.. сводной спеки, по отличию RFC С С++ от (gcc/icc/ms) етс Добавлено спустя 2 минуты dosprog пишет: Концы можно найти, короче, если сильно разозлиться. именно об сводной спеке и речь.. чтоб с каждой задротой.. не приходилось ЗЛИТСЯ я итак зол как козел Добавлено спустя 7 минут Getorix пишет: Если следовать стандарту и не использовать compiler-specific код ну во первых тут же форум по факту не по программированию. а по реверсу. поэтому когда ты используеш ЧУЖОЙ код то тебя никто не спрашивал про придерживания стандартов ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 07 марта 2016 12:32 · Поправил: dosprog · Личное сообщение · #26 VodoleY пишет: чтоб с каждой задротой.. не приходилось ЗЛИТСЯ Сорри, но это неизбежно.. VodoleY пишет: ну во первых тут же форум по факту не по программированию. а по реверсу. поэтому когда ты используеш ЧУЖОЙ код то тебя никто не спрашивал про придерживания стандартов Обычно приходится добавлять свой инклюде-файл, где описывать все навороты и развороты, недостающие в используемом комплекте компилятора по сравнению с тем, который был у автора кода. В таком случае очень помогает иметь хотя бы набор его "стандартых" инклюдов, из комплекта компилятора, которым он пользовался. (Вдобавок, по наблюдениям, среди сишников примерно половина является приверженцами идеи "непонятного программирования". Есть такое..) Описания всяких чудачеств нет как такового, стандарты же на Си/Си++, о которых тут упоминали, в компиляторах соблюдаются довольно жёстко. Может быть, даже очень жёстко. Поскольку если в компиляторе не заявлено соответствие стандарту Си/Си++, то это сразу же ставит на нём жирный крест - никто не станет с ним возиться и успеха он иметь не будет. | Сообщение посчитали полезным: VodoleY |
|
Создано: 07 марта 2016 12:40 · Личное сообщение · #27 |
|
Создано: 07 марта 2016 13:06 · Поправил: VodoleY · Личное сообщение · #28 dosprog пишет: (Вдобавок, по наблюдениям, среди сишников примерно половина является приверженцами идеи "непонятного программирования". Есть такое..) как же тут я хочу поставить много плюсов.. ЗЫ. я как бы вот хочу подметить. я раз 2 ставил студию.. и 2 раза QT даже по честному тратил несколько дней на попытки. но каждый раз с матами, плевал на все.. и говорил.. "мля. это в последний раз я трачу время зря" и вот неделю назад опять согрешил ЗЫЫ вот была у меня 1ая книжка по сям.. которую я читал. гдето 88го года.. там был очень яркий пример.. как дефайнами.. сделать код.. из си.. паскаль.. т.е. define { Begin define } End ну и в таком духе.. вот у меня ощущение что многие си кодеры.. так и работают. ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 07 марта 2016 13:23 · Поправил: dosprog · Личное сообщение · #29 |
|
Создано: 07 марта 2016 13:25 · Поправил: VodoleY · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Оффтоп —› С-- С С++ -> ... |