[an error occurred while processing this directive]
0x7F Расскажите зачем было в компиляторах для Windows менять стандарты C - из int (2 байта) сделали int (4 байта) при наличии стандартного long?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
bred
14 сентября 2005 г. 16:36
Составить ответ
|||
Конференция
|||
Архив
Ответы
Конечно это дурь недалеких програмеров. Но дело поправляется
—
AlexandrY
(14.09.2005 17:29
213.190.37.2
, 259 байт)
Так быстрее работает программа(+)
—
misyachniy
(14.09.2005 16:51
213.186.204.170
, 453 байт)
Вы очень хорошо обьянили почему на x86-32 основной тип целых данных должен иметь разряжность 32бита, но почему он должен называтся int?
—
F8
(14.09.2005 16:58
213.130.22.7
,
пустое
)
В книге Кораблева пишется, что гарантируется только ''short<=int<=long'' У VC++ 2,4,4 байта соответственно.
—
misyachniy
(14.09.2005 17:19
213.186.204.170
,
пустое
)
Потому, что int отождествляется с разрядностью слова данных процессора.
—
Bill
(14.09.2005 17:11
195.239.108.21
,
пустое
)
Да, но при этом не может быть меньше 16 бит.
—
SM
(14.09.2005 17:12
195.225.131.183
,
пустое
)
Существенное дополнение. 16 разрядов - это ограничение снизу.
—
Bill
(14.09.2005 17:13
195.239.108.21
,
пустое
)
потому что есть 'short int' ну не байтом же его делать когда есть char:))
—
ы
(14.09.2005 16:40
80.92.98.211
,
пустое
)
А кто сказал, что char - всегда байт?
—
АИ
(14.09.2005 17:47
84.185.2.142
,
пустое
)
У меня вообще есть мысль сделать байт 12-разрядным. Тогда слово будет 24 разряда (int), а long - 48.
—
Bill
(14.09.2005 18:20
195.239.108.105
, 59 байт)
Нет уж, байт оставьте в покое, ради бога. Иначе совсем с ума свихнуться можно будет. Емкость память 1 мегабайт и сразу вопрос, а каких это байт, старых или новых? Нет, нет и нет. К тому же разрядность АЦП
—
-=ВН=-
(14.09.2005 20:56
194.190.181.231
, 199 байт)
Для АЦП разрядностью выше 12, хватит и слова (24-разрядного). И надолго хватит. :)))
—
Bill
(14.09.2005 21:35
195.239.108.239
,
пустое
)
Да это конечно, но 32-х разрядного слова еще дольше хватит:-)
—
-=ВН=-
(14.09.2005 21:46
194.190.181.231
,
пустое
)
Но в этом случае избыточность больше.
—
Bill
(14.09.2005 21:53
195.239.108.239
,
пустое
)
Ну это как посмотреть:-)
—
-=ВН=-
(14.09.2005 22:02
194.190.181.231
, 155 байт)
Да и чем Вам 14 разрядов в качестве байта не нравятся?:-)
—
-=ВН=-
(14.09.2005 22:06
194.190.181.231
,
пустое
)
А кто сказал что в слове должно быть 2 байта? :)
—
SM
(14.09.2005 20:07
195.225.131.183
,
пустое
)
Никто не говорил. В Пентиумах в слове 4 байта, а скоро будет все 8.
—
Bill
(14.09.2005 20:18
195.239.108.214
, 198 байт)
Точность - да я уже никак не могу без хотя-бы 40-битных long long :)
—
SM
(14.09.2005 20:20
195.225.131.183
,
пустое
)
Ну, это специфические задачи DSP. Кстати, 48 все-таки больше 40.
—
Bill
(14.09.2005 20:32
195.239.108.69
, 93 байт)
А дело-то в оптимальности (+)
—
SM
(14.09.2005 20:47
195.225.131.183
, 1508 байт)
В том то и дело, что при 16-битных данных и 24-разрядном слове
—
Bill
(14.09.2005 21:47
195.239.108.239
, 395 байт)
У нас тут демократия или куда!!! При всем уважении, но такие решения нужно на референдуме принимать. А то, что это получается ложился спать было 8, а проснулся уже 12
—
F8
(14.09.2005 18:40
213.130.10.11
,
пустое
)
Ну, во-первых, это всего лишь идея. От нее до реализации еще далеко. А во-вторых,
—
Bill
(14.09.2005 20:12
195.239.108.214
, 833 байт)
доброе утро! :)
—
ы
(14.09.2005 17:52
80.92.98.211
,
пустое
,
ссылка
)
А в каком таком стандарте написано, что int это 16 бит?
—
SM
(14.09.2005 16:39
195.225.131.183
,
пустое
)
Ответ: У меня дома книжечка Березин & Березин, так там написано char -8 бит int - 16 бит long 32
—
bred
(14.09.2005 16:45
213.130.22.7
,
пустое
)
А Вы почитайте не всякие левые книжонки, а стандарт. А в нем... (+)
—
SM
(14.09.2005 16:49
195.225.131.183
, 213 байт)
Хорошо, но о какой переносимости порграмм можно вести речь, если структура описанная в IAR не равна описанию структуры в Borland C bilder
—
bred
(14.09.2005 16:55
213.130.22.7
,
пустое
)
Стандарт четко говорит (+)
—
SM
(14.09.2005 17:01
195.225.131.183
, 208 байт)
ага..у нас коллега программировал TMS какой то компилятор для дос так там все типы были по 32 бита т.к. у самого камня не было понятий о данных != 32 бита. (если коллега не соврал конечно)
—
ы
(14.09.2005 17:04
80.92.98.211
,
пустое
)
Ага, отето скажи чем-небуть 128 битным ''Helo world'' и нихто тебя не поймет :((
—
F8
(14.09.2005 17:09
213.130.22.7
,
пустое
)
да все будет путем, только 1 символ будет занимать не 1 байт, а 16..жуть
—
ы
(14.09.2005 17:11
80.92.98.211
,
пустое
)
Эту идею (128бит на char) надо подкинуть Китайцам, у них весь словарный запас войдёт в одну переменную :)
—
bred
(14.09.2005 17:45
213.130.22.7
,
пустое
)
Еще как поймет, если для этого использовать printf. Библиотека при выводе сама обязана корректно все сделать и в выходной поток вывести именно символы, как бы они не представлялись.
—
SM
(14.09.2005 17:11
195.225.131.183
,
пустое
)
Вполне возможно, и это не запрещено. Хотя я таких TMS не знаю. А с 16-битным char знаю :)
—
SM
(14.09.2005 17:05
195.225.131.183
,
пустое
)
320С31,32,33...не они?
—
ы
(14.09.2005 17:08
80.92.98.211
,
пустое
)
16 разрядный чар у с54xx, например. 32-х разрядный инт у c6x.
—
-=ВН=-
(14.09.2005 17:12
194.190.181.231
,
пустое
)
Могет быть. Это те, которые прошли мимо меня.
—
SM
(14.09.2005 17:09
195.225.131.183
,
пустое
)
Nu blin ti dayesh. A kto tebe obeschal perenosimost' :D Java usay :) A tak ya ne pomnyu niodnogo porta kotoriy bi obhodilsya maloy krovyu :D Udachi (-)
—
Medvedz
(14.09.2005 16:59
212.184.95.238
,
пустое
)
Ну блин стандартизаторы дают, завтра будет (по умолчанию) char - 32 бита, int -128 и опять лезь правь всю программу?
—
bred
(14.09.2005 17:04
213.130.22.7
,
пустое
)
Еще раз повторяю - в стандарте все логично. Каждый тип должен умет хранить число в определенных пределах. Больше - пожалуйста. Меньше - ни-ни. И об этом просто надо помнить.
—
SM
(14.09.2005 17:08
195.225.131.183
,
пустое
)
Это я помню, просто неудобно, пишу обмен между компьютером и железкой, что там, что там С, и теперь адаптирую С к С - БРЕД.
—
bred
(14.09.2005 17:18
213.130.22.7
,
пустое
)
Ну полжим в данный момент нифига ты не адаптируеш.(+)
—
F8
(14.09.2005 17:31
213.130.10.11
, 167 байт)
А тут уже другая проблема, с С не связанная. Вы (+)
—
SM
(14.09.2005 17:23
195.225.131.183
, 281 байт)
Интересно, а какое стандартное обоснование вот такому фокусу:-)
—
-=ВН=-
(14.09.2005 17:45
194.190.181.231
, 289 байт)
С точки зрения стандарта это просто некорректно написано. Должен быть другой тип применен, который гарантировано уместит в себе число 1000000.
—
SM
(14.09.2005 19:02
195.225.131.183
,
пустое
)
Согласен:-) Но это означает... Я уже 2 раза написал сегодня, что это означает:-)
—
-=ВН=-
(14.09.2005 19:06
194.190.181.231
,
пустое
)
Тут дело тонкое. Стандарт не обязывает писать переносимые программы. Если там разрешено иметь char 16 бит, есть такая платформа, и не планируется переносить прогу куда-то, так пользуйтесь на здоровье.
—
SM
(14.09.2005 19:48
195.225.131.183
,
пустое
)
Ну да, я и говорю, что стандарт неправильный:-) Да и как он может быть правильным, он же программистский:-)
—
-=ВН=-
(14.09.2005 20:11
194.190.181.231
,
пустое
)
Ну уж и прям неправильный. Зато удобный - почти всё под него подогнать можно не напрягаясь, и сказать - а вот у меня все соответствует!
—
SM
(14.09.2005 20:13
195.225.131.183
,
пустое
)
Так насчет "подогнать" я не возражаю:-) Без подгонки была бы тоска полнейшая с этим языком Цэ. В общем стандарт заключается в постоянном изменении стандарта. И только фигурные скобки неизменны.
—
-=ВН=-
(14.09.2005 20:17
194.190.181.231
,
пустое
)
Скобочки... тоька с запятой! Я из-за неё так и не стал настоящим программистом! Через полчаса натыкивания и сообщений компилера об ашыпках, чуть не погубил тогда ещё новый компутер грубой физицкой силой. О как!
—
-mse-
(14.09.2005 23:05
213.132.70.167
,
пустое
)
Ну и до этого не долго - вот разрешат их через #define переопределять :)
—
SM
(14.09.2005 20:18
195.225.131.183
,
пустое
)
Дык это, как же тогда? Ну а точки с запятой, неужто и их тоже?
—
-=ВН=-
(14.09.2005 20:20
194.190.181.231
,
пустое
)
Зато и шифровать не надо будет особо ценные исходники при пересылке - так как в них даже сам автор разобраться не сможет :)
—
SM
(14.09.2005 20:22
195.225.131.183
,
пустое
)
я давно как то ковырял буржуйский девайс доставшийся при разделе имущества обанкротившегося предприятия и что бы вы думали у него было в ПЗУ? исходник! обычный, на С, с комментариями...наверно наши там сперли исходники и привезли в Россию в пзу под видом девйса)))
—
ы
(14.09.2005 20:29
80.92.98.211
,
пустое
)
Да, да, да!!! Тут выше как раз про защиту спрашивали....
—
-=ВН=-
(14.09.2005 20:24
194.190.181.231
,
пустое
)
это делается так
—
ы
(14.09.2005 17:56
80.92.98.211
, 227 байт)
Как обойти я и без Вас в курсе, Вы мне про стандарт скажите, а не про нормальных людей:-)
—
-=ВН=-
(14.09.2005 18:01
194.190.181.231
,
пустое
)
откуда я знаю, но уверен что данную ситуацию _стандартизовать_ нельзя))
—
ы
(14.09.2005 18:06
80.92.98.211
,
пустое
)
Это с какого, пардон? Стандартизуйте размер инта. И все.
—
-=ВН=-
(14.09.2005 18:11
194.190.181.231
,
пустое
)
...''что в int обязано вместится число не менее чем INT_MIN...INT_MAX. Не храните в int числа длинее - и будет совместивость''(c) SM INT_MIN, INT_MAX стандартизированы?
—
ы
(14.09.2005 18:18
80.92.98.211
,
пустое
)
Не надо мне тут всякие (с) приписывать. Это (c) ISO/IEC 9899:1990. А INT_MIN и INT_MAX стандартизованы только минимальными по модулю значениями. А в каждой реализации свои.
—
SM
(14.09.2005 20:12
195.225.131.183
,
пустое
)
ну уж извините..(с) это цитата а в iso как минимум по аглицки писано:)
—
ы
(14.09.2005 20:16
80.92.98.211
,
пустое
)
(с) это copyright :) :) а не цитата....
—
SM
(14.09.2005 20:19
195.225.131.183
,
пустое
)
ну пральна...я скопировал Вашу цитату с помощью CTRL-C CTRL-V :) и попал под закон о копирайте, иначе Вы бы написали ты че мои слова копируешь?))
—
ы
(14.09.2005 20:24
80.92.98.211
,
пустое
)
Это не ты попал, а я похоже попал, так как сразу (c) не поставил, когда из ISO выдирал :) :)
—
SM
(14.09.2005 20:27
195.225.131.183
,
пустое
)
Так не хранить числа длиннее чем INT MIN фактически стандартизует INT MIN в качестве размера int'а. Не минимального, а просто размера:-)
—
-=ВН=-
(14.09.2005 18:22
194.190.181.231
,
пустое
)
По-моему достаточно просто помнить, что int может быть и меньшей разрядности и не использовать числа превышающее максимальное для int минимальной разрядности.
—
rezident
(14.09.2005 18:04
195.222.149.11
,
пустое
)
Так это фактически стандартизует разрядность int:-) 16 разрядов и баста.
—
-=ВН=-
(14.09.2005 18:09
194.190.181.231
, 136 байт)
Ответ:
—
rezident
(14.09.2005 18:14
195.222.149.11
,
пустое
,
ссылка
)
Либо переопределите типы сами. У нас, например, в коллективно разрабатываемых программах типы определены примерно так
—
rezident
(14.09.2005 18:20
195.222.149.11
, 365 байт)
Да это все понятно, это обходные пути, я ж не про то. Я про то, что стандарт неправильный, мягко говоря:-)
—
-=ВН=-
(14.09.2005 18:25
194.190.181.231
,
пустое
)
сейчас -=BH=- впадет в истерику)))))
—
ы
(14.09.2005 18:22
80.92.98.211
,
пустое
)
?!
—
-=ВН=-
(14.09.2005 18:23
194.190.181.231
,
пустое
)
Вам два человека советуют паралельно одно и тоже то, а чем Вы и ''...без Нас в курсе'' (c), только в разных ветках не читая друг друга:))
—
ы
(14.09.2005 18:26
80.92.98.211
,
пустое
)
Вам два человека советуют паралельно одно и тоже то, а чем Вы и ''...без Нас в курсе'' (c), только в разных ветках не читая друг друга:))
—
ы
(14.09.2005 18:25
80.92.98.211
,
пустое
)
Так я ж не виноват, что не поняли вопрос, или не читаете друг друга:-) Я ж не спрашивал как обойти:-)
—
-=ВН=-
(14.09.2005 18:30
194.190.181.231
,
пустое
)
как будто тут все четко отвечают на конкретный вопрос...а по3.14здеть?:)
—
ы
(14.09.2005 18:32
80.92.98.211
,
пустое
)
Ну вот это уже другой разговор:-)
—
-=ВН=-
(14.09.2005 18:35
194.190.181.231
,
пустое
)
Да знаю я это:-) Но что же это за стандарт, если стандартный тип неправильно работает, если его обойти как-то нужно.
—
-=ВН=-
(14.09.2005 18:17
194.190.181.231
,
пустое
)
Если Ющенко выжил от 200-кратно превышенной ПДК диоксинов, то это ведь не повод изменить стандарты на ПДК содержания диоксинов в закусках :)))
—
rezident
(14.09.2005 18:26
195.222.149.11
,
пустое
)
Ющинка - каззел!!!
—
0x20_4600
(14.09.2005 18:57
213.179.254.210
,
пустое
)
Ну дак ведь Ющенко это феномен. Или му..звон.? А int, он совсем не Ющенко:-)
—
-=ВН=-
(14.09.2005 18:34
194.190.181.231
,
пустое
)
Ющинка - каззел!!!
—
0x20_4600
(14.09.2005 18:57
213.179.254.210
,
пустое
)
Хорошо, хорошо, пусть так:-)
—
-=ВН=-
(14.09.2005 19:05
194.190.181.231
,
пустое
)
Пардон! Я совсем забыл, что это ваша самая любимая мозоль :)
—
rezident
(14.09.2005 19:04
195.222.149.11
,
пустое
)
стандартный он только тем что зовется 'int' а не 'самолет', является зарезервированным словом и выделяется другим цветом в случае поддержки редактором такой фичи...вот и фсе
—
ы
(14.09.2005 18:21
80.92.98.211
,
пустое
)
Ну на это все, сказать ничего не имею:-) Если стандарт в том, что инт не самолет - все, сдаюсь:-)
—
-=ВН=-
(14.09.2005 18:27
194.190.181.231
,
пустое
)
Если два глухонемых, общающихся жестами, будут показывать один средний палец, а другой "по локоть", то измениться ли их отношение друг к другу? :)
—
rezident
(14.09.2005 18:35
195.222.149.11
,
пустое
)
Глухонемым не был, не знаю:-)
—
-=ВН=-
(14.09.2005 18:38
194.190.181.231
,
пустое
)
как если бы умели говорить и говорили друг другу одну и ту же фразу "Fuck you!" :)))
—
rezident
(14.09.2005 18:37
195.222.149.11
,
пустое
)
Ага, понятно что глухонемые говорили, но тогда наверное бы изменилось:-) "Если б я имел коня, это был бы номер, а вот если б конь имел меня, я б наверно помер"
—
-=ВН=-
(14.09.2005 18:42
194.190.181.231
,
пустое
)
Ответ: Железозависимые функции написаны отдельно, принимают и возвращают массив байт указанной длины (она же структура), только размер структур у двух компиляторах разный, приходится ручками корректировать.
—
bred
(14.09.2005 17:30
213.130.22.7
,
пустое
)
Так логично делать, если писать именно портируемый код так (+)
—
SM
(14.09.2005 17:33
195.225.131.183
, 164 байт)
Спасибо.
—
bred
(14.09.2005 17:41
213.130.22.7
,
пустое
)
Потому-что int по определению равна разрядности системы. В Win64 она будет 64. А long будет 32.
—
New_User
(14.09.2005 16:44
62.117.76.3
,
пустое
)
Нет, long всегда будет >= int. Long int это же "длинное" целое.
—
Bill
(14.09.2005 17:18
195.239.108.21
,
пустое
)
а почему в IAR например для авр
—
ы
(14.09.2005 16:49
80.92.98.211
, 329 байт)
Потому что бизнес! многие привыкли что int 16разрядов(вон какой флейм)
—
zxcvbn
(14.09.2005 19:07
195.151.194.51
,
пустое
)
Это вопрос?
—
Bill
(14.09.2005 16:55
195.239.108.21
,
пустое
)
ага
—
ы
(14.09.2005 16:58
80.92.98.211
,
пустое
)
Какая длина слова является наиболее естественной для 32-разрядной машины?
—
Bill
(14.09.2005 17:08
195.239.108.21
, 468 байт)
Адресация тоже байтная?
—
New_User
(14.09.2005 16:54
62.117.76.3
,
пустое
)
разрядность системы определяется адресацией?
—
ы
(14.09.2005 16:59
80.92.98.211
,
пустое
)
Вот и я об этом же!
—
SM
(14.09.2005 16:49
195.225.131.183
,
пустое
)
Отправка ответа
Имя (обязательно):
Пароль:
E-mail:
NoIX ключ
:
Запомнить
Тема (обязательно):
Сообщение:
Ссылка на URL:
Название ссылки:
URL изображения:
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru