9

Почему нет справочной страницы для функции sizeof ?

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

$ man sizeof
No manual entry for sizeof

Я вижу man-страницы для других функций C, таких как malloc если я запускаю man 3 malloc и подобные команды, но ничего для sizeof .

2 ответа2

8

sizeof не является функцией. это оператор: http://en.wikipedia.org/wiki/Sizeof

1

Вы можете использовать man -wK 'sizeof' | sort -u чтобы найти статьи, которые содержат sizeof , но это даст много результатов. Однако обратите внимание, что каждая статья о чем-то будет иметь эту вещь как голое слово, окруженное пробелами, мы будем искать статью, подобную этой zgrep -P '\ssizeof\s' /usr/share/man/man3/* . Но поиск в разделе 3 не дает никакой полезной информации, поэтому я буду искать в разделе 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

Как вы можете видеть, sizeof упоминается на странице руководства оператора, потому что это не функция, а оператор, и он работает даже без скобок для идентификаторов, таких как sizeof buf выше

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .