Перейти к содержанию
    

Чем отличается uint8_t от unsigned char?

Коллеги, переношу проект из WinAVR в KEIL.

Есть переменная uint8_t - в KEIL не прокатывает. Задумался, а чем же по сути она отличается от char. И как ее объявить в KEIL, дабы перенести без минимальных последствий?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тем, что uint8_t имеет конкретно определенную размерность - 8 бит. А unsigned char не имеет определенной размерности. В стандарте Си определено только соотношение char <= short int <= int <= long int. Например, на архитектуре TMS320 в среде CCS тип char 16-и битный.

Для использования типов с определенной привязкой к размеру следует использовать хедер stdint.h.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В стандарте Си определено только соотношение char <= short int <= int <= long int.

четырехбитников мало а доступ к 8 битам есть как правило почти везде.

Изменено пользователем dch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем Danis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Откуда цитата?

И какое отношение она имеет к соотношению размеров типа unsigned char и uint8_t?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавьте к инклудам #include <inttypes.h> или #include <stdint.h> и будет Вам счастье...

В AVR-овских исходниках, как правило, также встречается инклуд на один из этих файлов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тем, что uint8_t имеет конкретно определенную размерность - 8 бит. А unsigned char не имеет определенной размерности. В стандарте Си определено только соотношение char <= short int <= int <= long int. Например, на архитектуре TMS320 в среде CCS тип char 16-и битный.

Стесняюсь спросить...а на вышеназванной платформе что представляет собой uint8_t? К примеру на армах это: "typedef unsigned char uin8_t". А на tms320 ? :cranky:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чстенько компиляторы имеют свои собственные builtin типы данных которыми впоследствии определяются различные другие типы.

Так что размер uint8_t - будет 8 бит (я так думаю) - вопрос насколько эффективен он на такой платформе...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Открою Вам маленький секрет :) В stdint.h для C2000 нет ни int8_t ни uint8_t

Есть только int_least8_t и uint_least8_t, которые, как и полагается, 16ти битные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересный ход. Нет человека - нет проблем!:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не может он обеспечить 8бит никак!

там sizeof(char) == 1

Можно только побайтово перебрать массив с помощью intrinsic т.е. он там грузит в AL 16бит, а потом можно обратиться к старшему и младшему байту как к двум 8ми битным регистрам. На этом 8ми битность заканчивается :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это была опечатка. Как раз равно 2
именно 1.

В принципе то да, sizeof(char) всегда 1, но тут то это не 8бит, а 16 :) в этом вся "фишка"

Написал я про размер char для того, чтобы было понятно, что и не может там быть int8_t т.к. чему же тогда равнялся бы его sizeof? 0.5 что-ли :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...