Где страница руководства для функции `sizeof` C?

10

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

$ 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.

user1527227
источник
почему вы хотите увидеть справочную страницу Linux для C? Если это не связано с POSIX, чтение из стандартного документа лучше
phuclv

Ответы:

9

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

drk.com.ar
источник
1
Оператор это другое слово для макроса? Что именно означает оператор?
user1527227
1
Нет. Макрос - это некоторый текст (не зарезервированное слово, ни оператор, ни функция), интерпретируемый прекомпилятором и расширяемый во что-то, что может быть скомпилировано. Операторы выглядят как функции, но они являются частью самого языка. Функции обычно являются частью библиотеки. Для подробного объяснения читайте: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar
Спасибо. Последний вопрос: есть ли официальная документация для таких операторов?
user1527227
5
Да. Спецификация языка C: open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf - Проверка в разделе
6.5.x
2

Вы можете использовать, 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

phuclv
источник