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

9730
user1527227

Почему нет справочной страницы для 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.

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

2 ответа на вопрос

8
drk.com.ar

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

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

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

Похожие вопросы