¿Dónde está la página del manual para la función `sizeof` C?

10

¿Cómo es que no hay una página de manual para la sizeoffunción C?

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

$ man sizeof
No manual entry for sizeof

Veo páginas de manual para otras funciones de C como mallocsi ejecuto man 3 mallocy comandos similares, pero nada para sizeof.

usuario1527227
fuente
¿Por qué quieres ver la página de manual de Linux para una cosa C? A menos que sea una cuestión relacionada con POSIX, es mejor leer un documento estándar
phuclv

Respuestas:

9

sizeof no es una función. es un operador: http://en.wikipedia.org/wiki/Sizeof

drk.com.ar
fuente
1
¿Es operador otra palabra para macro? ¿Qué significa exactamente el operador?
user1527227
1
No. Una macro es un texto (no palabra reservada, ni operador, ni función) interpretado por el precompilador y expandido en algo que puede compilarse. Los operadores parecen funciones, pero son parte del lenguaje en sí. Las funciones generalmente son parte de una biblioteca. Para una explicación detallada, lea: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar
Gracias. Última pregunta: ¿Existe una documentación oficial para operadores como este?
user1527227
55
Si. La especificación del lenguaje C: open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf - Consulte la sección 6.5.x
drk.com.ar
2

Puede utilizar man -wK 'sizeof' | sort -upara encontrar los artículos que contienen sizeof, pero eso arrojará muchos resultados. Sin embargo, tenga en cuenta que cada artículo sobre algo tendrá esa palabra como una simple palabra rodeada de espacios, buscaremos el artículo de esta manera zgrep -P '\ssizeof\s' /usr/share/man/man3/*. Pero buscar en la sección 3 no proporciona ninguna información útil, así que buscaré en la sección 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

Como puede ver, sizeofse menciona en la página del manual del operador, porque no es una función sino un operador y funciona incluso sin paréntesis para los identificadores como los sizeof bufanteriores.

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
fuente