Gdzie jest strona man dla funkcji `sizeof` C?

10

Dlaczego nie ma strony man dla sizeoffunkcji C?

$ man 3 sizeof
No manual entry for sizeof in section 3

$ man sizeof
No manual entry for sizeof

Widzę strony podręcznika dla innych funkcji C, takich jak mallocuruchamianie man 3 malloci podobne polecenia, ale nic dla sizeof.

użytkownik1527227
źródło
dlaczego chcesz zobaczyć stronę podręcznika systemu Linux dla C? O ile nie jest to kwestia związana z POSIX, lepiej jest czytać ze standardowego dokumentu
phuclv

Odpowiedzi:

9

sizeof nie jest funkcją. to operator: http://en.wikipedia.org/wiki/Sizeof

drk.com.ar
źródło
1
Czy operator to inne słowo oznaczające makro? Co dokładnie oznacza operator?
user1527227
1
Nie. Makro to jakiś tekst (niezastrzeżone słowo, operator, ani funkcja) interpretowany przez prekompilator i rozwijany w coś, co można skompilować. Operatory wyglądają jak funkcje, ale są częścią samego języka. Funkcje zwykle są częścią biblioteki. Aby uzyskać szczegółowe wyjaśnienie, przeczytaj: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar
Dzięki. Ostatnie pytanie: czy istnieje oficjalna dokumentacja dla takich operatorów?
user1527227
5
Tak. Specyfikacja języka C: open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf - Sprawdź sekcję
6.5.x
2

Możesz użyć, man -wK 'sizeof' | sort -uaby znaleźć artykuły, które zawierają sizeof, ale to zwróci wiele wyników. Zauważ jednak, że każdy artykuł o czymś będzie miał to słowo jako puste słowo otoczone spacjami, będziemy szukać tego artykułu w ten sposób zgrep -P '\ssizeof\s' /usr/share/man/man3/*. Ale wyszukiwanie w sekcji 3 nie zawiera żadnych użytecznych informacji, dlatego przeszukam w sekcji 7

$ zgrep -P '\ssizeof\s' /usr/share/man/man7/*
/usr/share/man/man7/inotify.7.gz:        len = read(fd, buf, sizeof buf);
/usr/share/man/man7/operator.7.gz:! ~ ++ \-\- + \- (type) * & sizeof    right to left

Jak widać, sizeofwspomniana jest na stronie podręcznika operatora, ponieważ nie jest to funkcja, ale operator i działa ona nawet bez nawiasów dla identyfikatorów takich jak sizeof bufpowyżej

OPERATOR(7)               Linux Programmer's Manual              OPERATOR(7)

NAME         top

       operator - C operator precedence and order of evaluation

DESCRIPTION         top

       This manual page lists C operators and their precedence in
       evaluation.

       Operator                            Associativity
       () [] -> .                          left to right
       ! ~ ++ -- + - (type) * & sizeof     right to left
       * / %                               left to right
       + -                                 left to right
       << >>                               left to right
       < <= > >=                           left to right
       == !=                               left to right
       &                                   left to right
       ^                                   left to right
       |                                   left to right
       &&                                  left to right
       ||                                  left to right
       ?:                                  right to left
       = += -= *= /= %= <<= >>= &= ^= |=   right to left
       ,                                   left to right

http://man7.org/linux/man-pages/man7/operator.7.html

phuclv
źródło