Метценгерштейн 0 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба Для чего используют fast? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба Запрос на чтение документации вслух. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба к сожалению, не нашел в инете внятного объяснения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба Для чего используют fast? Может регистровая переменная, может в "быстром" сегменте памяти. А в каком это компиляторе такое ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба в IAR точно было Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 28 апреля, 2017 Опубликовано 28 апреля, 2017 (изменено) · Жалоба в IAR точно было не помню такого (для MSP430). Возможно какойто макрос - надо рыться в инклудах иаровских. Или какая-то специфика под конкретный таргет - например константы для контроллера Atmel 8515 должны быть размещены во внутреннем флеш, а не внешней памяти. ps typedef _INT_FAST8_T_TYPE_ int_fast8_t; Изменено 28 апреля, 2017 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба Действия с int_leastN_t и int_fastN_t типами стандартом отданы на усмотрения компиляторов. Единственно оговорено, что длина этого типа должна быть не менее N. А дальше - как решит компилятор. uint_fast8_t для ARM-ов точно будет располагаться в полном 32-х разрядном слове, но логически будет ограничено 8-ю битами. А uint_least8_t - как будет удобнее компилятору для данной конкретной архитектуры. А вот работа с uint8_t будет приводить к дополнительным командам, для применения именно 8-и разрядных команд (если они есть). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба уже полез, так ---- uint_fast8_t typedef unsigned char uint_fast8_t; typedef unsigned short uint_fast16_t; typedef unsigned long uint_fast32_t; typedef unsigned long long uint_fast64_t; The types each specify an unsigned integer type that supports the fastest operations among those whose representation has at least eight, 16, 32, or 64 bits, respectively. Note that the definitions shown here are merely representative. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 6 июня, 2017 Опубликовано 6 июня, 2017 · Жалоба Для чего используют fast? Для скорости, очевидно! Основная идея - улучшение переносимости программ между архитектурами с разной разрядностью АЛУ. Например, на AVR uint_fast8_t будет 8-ми битным, а на Cortex-m уже 32-ух битным. Его следует использовать, фактически, повсеместно, кроме как в протоколах передачи данных. Я использую эти типы в счётчиках цикла, в качестве аргументов функции, а также в качестве возвращаемого функцией значения, локальные временные и статические переменные и т.д.... Чтобы понять суть, напишите код для Cortex-m, с использованием uint_fast8_t и uint8_t, и посмотрите во что выливается компиляция такого кода: i++; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VadymEngineer 0 30 октября, 2017 Опубликовано 30 октября, 2017 · Жалоба Для чего используют fast? Согласно С99: uint_fast8_t - тип данных, который содержит не менее 8 бит и операции с которым являются самыми быстрыми на данной платформе uint_least8_t - самый маленький тип данных для данной платформы, который содержит не менее 8 бит uint8_t - тип данных, который содержит ровно 8 бит, однако имеет место специфика работы с платформой - если разрядность не позволяет, то такого типа для данной платформы существовать не должно (в отличие от двух вышеперечисленных) Хороший пример приведён в ответе тут и в сообщениях форумчан. Использование таких типов с фиксироваными размерами(uint8_t, int32_t etc.) является предпочтительным относительно типов unsigned char, unsigned int etc. - это указано многими правилами кодирования (MISRA C, например). Посмотреть как те или иные типы фиксированого размера соотносятся с типами данных plain C для конктретной платформы можно посмотреть в заголовке <stdint.h>. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться