Où est la page de manuel pour la fonction C `sizeof`?

10

Comment se fait-il qu'il n'y ait pas de page de manuel pour la sizeoffonction C?

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

$ man sizeof
No manual entry for sizeof

Je vois des pages de manuel pour d'autres fonctions C comme mallocsi je lance man 3 mallocet des commandes similaires, mais rien pour sizeof.

user1527227
la source
pourquoi voulez-vous voir la page de manuel Linux pour un truc en C? À moins que ce ne soit lié à POSIX, il vaut mieux lire dans un document standard
phuclv

Réponses:

9

sizeof n'est pas une fonction. c'est un opérateur: http://en.wikipedia.org/wiki/Sizeof

drk.com.ar
la source
1
L'opérateur est-il un autre mot pour macro? Que signifie exactement l'opérateur?
user1527227
1
Non. Une macro est un texte (pas un mot réservé, ni un opérateur, ni une fonction) interprété par le précompilateur et développé en quelque chose qui peut être compilé. Les opérateurs ressemblent à des fonctions, mais ils font partie du langage lui-même. Les fonctions font généralement partie d'une bibliothèque. Pour une explication détaillée, lisez: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar
Merci. Dernière question: existe-t-il une documentation officielle pour les opérateurs comme celui-ci?
user1527227
5
Oui. La spécification du langage C: open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf - Consultez la section 6.5.x
drk.com.ar
2

Vous pouvez utiliser man -wK 'sizeof' | sort -upour trouver les articles qui contiennent sizeof, mais cela renverra beaucoup de résultats. Cependant, notez que chaque article sur quelque chose aura cette chose comme un mot nu entouré d'espaces, nous rechercherons l'article comme celui-ci zgrep -P '\ssizeof\s' /usr/share/man/man3/*. Mais la recherche dans la section 3 ne donne aucune information utile, donc je vais chercher dans la section 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

Comme vous pouvez le voir, le sizeofest mentionné dans la page de manuel de l'opérateur, car ce n'est pas une fonction mais un opérateur et il fonctionne même sans parenthèses pour les identificateurs comme sizeof bufci-dessus

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
la source