Zawsze stosowane typedef w osadzonym programowania, aby uniknąć typowych błędów:Inteligentne typedefs
int8_t
- 8 bitową liczbę całkowitą
int16_t
- 16-bitowa liczba całkowita
int32_t
- 32-bitowa liczba całkowita
uint8_t
- 8 nieco liczba całkowita bez znaku
uint16_t
- 16-bitowa liczba całkowita bez znaku
uint32_t
- 32-bitowa liczba całkowita bez znaku
Niedawno zagnieżdżona muza (numer 177, a nie na stronie internetowej) wprowadziła mnie w przekonanie, że przydatne jest posiadanie pewnych specyficznych dla wydajności typów. This standard sugeruje posiadanie typedefs wskazujących, że chcesz najszybszego typu o minimalnym rozmiarze.
Na przykład, można zadeklarować zmiennej za pomocą int_fast16_t
, ale w rzeczywistości być realizowana jako int32_t
na 32-bitowy procesor, lub int64_t
na 64-bitowy procesor, jak te byłyby najszybsze rodzaje co najmniej 16 bitów na na tych platformach. Na 8-bitowym procesorze będą to bity int16_t
, aby spełnić wymóg minimalnej wielkości.
Nigdy wcześniej nie widziałem tego zużycia przed Chciałem wiedzieć
- Widzieliście to w żadnych projektów, wbudowany lub w inny sposób?
- Jakiekolwiek możliwe powody, aby uniknąć tego rodzaju optymalizacji w typedefs?
+1 dla problemu zwrotu funkcji. Kompilator narzekałby na różne typy, jeśli są one wewnętrznie różnej wielkości po rozwiązaniu, ale nadal jest to istotne. Cały czas używam 8-bitowych procesorów w pracy osadzonej, a problemy z typedef są koszmarem (twórcy aplikacji przyjmują, że int ma 32 bity). –
Tak, zdecydowanie użyj czegoś takiego, jak int32_t, jeśli potrzebujesz typu danych o szerokości 32 bitów. Przyjmowanie założenia o ogólnym rodzaju int jest źle złe. :) Po prostu mówię, że podział na typedefs na int32 i int32fast wygląda na to, że dodadzą trochę więcej niż dodatkowe zamieszanie. – jalf