[PC] [AVR] [PIC] Zrozumieć size_t...
: czwartek 24 gru 2015, 02:49
Witam
Dziś na warsztat wziąłem typ size_t, który wypłynął mi podczas przeglądania informacji o module time.h.
Proszę mnie poprawić, jeśli się mylę:
Typ size_t jest używany do zwracania rozmiaru jakiegoś obiektu, jak np. tablicy czy struktury. Typ ten jest zależny od implementacji i dlatego w różnych architekturach jego pojemność może się różnić. Np. w AVR8 jego pojemność wynosi 16 bitów, w PC x86 32 bity, a w PC x64 64 bity. Na zmiennych tego typu możemy wykonywać operacje arytmetyczne.
Mam też pytanie: Jeśli jest to typ jak każdy inny, to czy można rzutować na ten typ i czy w ogóle trzeba rzutować na ten typ? Rzutowanie w drugą stronę również mnie zastanawia...
Dajmy na to mamy zmienną typu uint8_t i do niej chcemy przypisać wartość zwróconą przez funkcję. Funkcja ta zwraca jednak wartość typu size_t (ilość zapisanych bajtów w jakiejś tam tablicy). Próbuję więc wpisać wartość typu size_t do zmiennej typu uint8_t. Można tak? Trzeba? A może tak się nie robi?
Nie wykonywałem jeszcze prób kompilacji takich operacji, bo zastanawiam się, czy w ogóle korzystać z size_t w przypadku, gdy lwia część moich softów pisana jest na ośmiobitowe maszyny.
Pozdrawiam
Dziś na warsztat wziąłem typ size_t, który wypłynął mi podczas przeglądania informacji o module time.h.
Proszę mnie poprawić, jeśli się mylę:
Typ size_t jest używany do zwracania rozmiaru jakiegoś obiektu, jak np. tablicy czy struktury. Typ ten jest zależny od implementacji i dlatego w różnych architekturach jego pojemność może się różnić. Np. w AVR8 jego pojemność wynosi 16 bitów, w PC x86 32 bity, a w PC x64 64 bity. Na zmiennych tego typu możemy wykonywać operacje arytmetyczne.
Mam też pytanie: Jeśli jest to typ jak każdy inny, to czy można rzutować na ten typ i czy w ogóle trzeba rzutować na ten typ? Rzutowanie w drugą stronę również mnie zastanawia...
Dajmy na to mamy zmienną typu uint8_t i do niej chcemy przypisać wartość zwróconą przez funkcję. Funkcja ta zwraca jednak wartość typu size_t (ilość zapisanych bajtów w jakiejś tam tablicy). Próbuję więc wpisać wartość typu size_t do zmiennej typu uint8_t. Można tak? Trzeba? A może tak się nie robi?
Nie wykonywałem jeszcze prób kompilacji takich operacji, bo zastanawiam się, czy w ogóle korzystać z size_t w przypadku, gdy lwia część moich softów pisana jest na ośmiobitowe maszyny.
Pozdrawiam