Де знаходиться сторінка для функції `sizeof` C?


10

Чому так не існує жодної сторінки для функції sizeofC?

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

$ man sizeof
No manual entry for sizeof

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


чому ви хочете побачити сторінку людини Linux для речі C? Якщо це не річ, пов’язана з POSIX, краще читати зі стандартного документа
phuclv

Відповіді:


9

sizeof не є функцією. це оператор: http://en.wikipedia.org/wiki/Sizeof


1
Чи інше слово для оператора макрос? Що точно означає оператор?
користувач1527227

1
Ні. Макрос - це текст (не зарезервоване слово, ані оператор, ані функція), що інтерпретується прекомпілятором і розширюється на те, що можна скласти. Оператори виглядають як функції, але вони є частиною самої мови. Функції зазвичай є частиною бібліотеки. Детальне пояснення читайте: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar

Дякую. Останнє запитання: чи існує офіційна документація для таких операторів?
користувач1527227

5
Так. Специфікація мови C: open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf - Перевірте розділ 6.5.x
drk.com.ar

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.