-=Женек=- 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Коллеги, переношу проект из WinAVR в KEIL. Есть переменная uint8_t - в KEIL не прокатывает. Задумался, а чем же по сути она отличается от char. И как ее объявить в KEIL, дабы перенести без минимальных последствий? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Тем, что uint8_t имеет конкретно определенную размерность - 8 бит. А unsigned char не имеет определенной размерности. В стандарте Си определено только соотношение char <= short int <= int <= long int. Например, на архитектуре TMS320 в среде CCS тип char 16-и битный. Для использования типов с определенной привязкой к размеру следует использовать хедер stdint.h. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 15 мая, 2010 Опубликовано 15 мая, 2010 (изменено) · Жалоба В стандарте Си определено только соотношение char <= short int <= int <= long int. четырехбитников мало а доступ к 8 битам есть как правило почти везде. Изменено 15 мая, 2010 пользователем dch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 20 мая, 2010 Опубликовано 20 мая, 2010 (изменено) · Жалоба UInt8 - An unsigned 8-bit integer. This value maps to the Byte type. Character Sets Used by Fonts All fonts use a character set. A character set contains punctuation marks, numerals, uppercase and lowercase letters, and all other printable characters. Each element of a character set is identified by a number. Most character sets in use are supersets of the U.S. ASCII character set, which defines characters for the 96 numeric values from 32 through 127. There are five major groups of character sets: Windows Unicode OEM (original equipment manufacturer) Symbol Vendor-specific Изменено 20 мая, 2010 пользователем Danis Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба Откуда цитата? И какое отношение она имеет к соотношению размеров типа unsigned char и uint8_t? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shista 0 12 июня, 2010 Опубликовано 12 июня, 2010 · Жалоба Добавьте к инклудам #include <inttypes.h> или #include <stdint.h> и будет Вам счастье... В AVR-овских исходниках, как правило, также встречается инклуд на один из этих файлов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
baralgin 0 12 июня, 2010 Опубликовано 12 июня, 2010 · Жалоба Тем, что uint8_t имеет конкретно определенную размерность - 8 бит. А unsigned char не имеет определенной размерности. В стандарте Си определено только соотношение char <= short int <= int <= long int. Например, на архитектуре TMS320 в среде CCS тип char 16-и битный. Стесняюсь спросить...а на вышеназванной платформе что представляет собой uint8_t? К примеру на армах это: "typedef unsigned char uin8_t". А на tms320 ? :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 13 июня, 2010 Опубликовано 13 июня, 2010 · Жалоба Чстенько компиляторы имеют свои собственные builtin типы данных которыми впоследствии определяются различные другие типы. Так что размер uint8_t - будет 8 бит (я так думаю) - вопрос насколько эффективен он на такой платформе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 13 июня, 2010 Опубликовано 13 июня, 2010 · Жалоба Открою Вам маленький секрет :) В stdint.h для C2000 нет ни int8_t ни uint8_t Есть только int_least8_t и uint_least8_t, которые, как и полагается, 16ти битные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 13 июня, 2010 Опубликовано 13 июня, 2010 · Жалоба Интересный ход. Нет человека - нет проблем!:-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 13 июня, 2010 Опубликовано 13 июня, 2010 · Жалоба Ну не может он обеспечить 8бит никак! там sizeof(char) == 1 Можно только побайтово перебрать массив с помощью intrinsic т.е. он там грузит в AL 16бит, а потом можно обратиться к старшему и младшему байту как к двум 8ми битным регистрам. На этом 8ми битность заканчивается :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба там sizeof(char) == 1 А где иначе? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
baralgin 0 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба А где иначе? :) Это была опечатка. Как раз равно 2 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
baralgin 0 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба легкий поиск гуглом и оказывается таки 1, как и int... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 14 июня, 2010 Опубликовано 14 июня, 2010 · Жалоба Это была опечатка. Как раз равно 2именно 1. В принципе то да, sizeof(char) всегда 1, но тут то это не 8бит, а 16 :) в этом вся "фишка" Написал я про размер char для того, чтобы было понятно, что и не может там быть int8_t т.к. чему же тогда равнялся бы его sizeof? 0.5 что-ли :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться