std::size_t
jest powszechnie używany do indeksowania tablic i liczenia pętli. Z definicji std::size_t
jest liczbą całkowitą bez znaku wyniku operatora sizeof
, a także operatora sizeof...
i operatora alignof
(od C++ 11). Jest zdefiniowana w następujących nagłówków:Jak zdefiniować niestandardowy typ wielkosci platformy?
<cstddef>
<cstdio>
<cstdlib>
<cstring>
<ctime>
<cwchar>
Do mojego un zgodnie z definicją, rodzaj zwracany przez tych operatorów jest określony przez implementację.
Co chcę jest zdefiniowanie niestandardowego size_t
w celu uniknięcia niepotrzebnego ciągnąc rzeczy z jednego z wyżej wymienionych nagłówków w pliku kopalni .cpp
, ponieważ w moim pliku tylko potrzebne std::size_t
.
w C++ 11 i powyżej, Myślałem, że mogę użyć następującego Alias:
using size_t = decltype(sizeof(1));
Jednak chciałbym zdefiniować size_t
typ do wstępnego C++ 11 kompilatorów w przenośnym/wieloplatformowy sposób.
Czy istnieje przenośny sposób definiowania size_t
dla pre-C++ 11?
Należy prawdopodobnie oznacz to pytanie C++ lub C++ 03 98, ale nie C++ 11, prawda? – Rakete1111
* Dlaczego * nie chcesz dołączać żadnych standardowych plików nagłówkowych? Zazwyczaj nie są one tak duże i nie będą miały znaczącego wpływu na czas kompilacji. I jako te, w których 'size_t' jest zdefiniowany, tak naprawdę nie ma żadnych definicji funkcji w nich, co oznacza, że nie będzie żadnego wygenerowanego dla nich kodu. Czy możesz rozwikłać problem * rzeczywisty *, który chcesz rozwiązać, definiując swój własny typ? –
'cstddef' jest dość małym nagłówkiem, pod względem symboli. Czy to naprawdę zbyt dużo zanieczyszczeń w przestrzeni nazw, aby je ściągnąć? – StoryTeller