Wo ist die Manpage für die `sizeof` C-Funktion?

10

Wie kommt es, dass es keine Manpage für die sizeofC-Funktion gibt?

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

$ man sizeof
No manual entry for sizeof

Ich sehe Manpages für andere C-Funktionen wie mallocwenn ich man 3 mallocähnliche Befehle ausführe, aber nichts für sizeof.

user1527227
quelle
Warum möchten Sie die Linux-Manpage für eine C-Sache sehen? Wenn es sich nicht um eine POSIX-bezogene Sache handelt, ist das Lesen aus einem Standarddokument besser
phuclv

Antworten:

9

sizeof ist keine Funktion. Es ist ein Operator: http://en.wikipedia.org/wiki/Sizeof

drk.com.ar
quelle
1
Ist Operator ein anderes Wort für Makro? Was bedeutet Operator genau?
Benutzer1527227
1
Nein. Ein Makro ist ein Text (weder ein reserviertes Wort noch ein Operator oder eine Funktion), der vom Precompiler interpretiert und zu etwas erweitert wird, das kompiliert werden kann. Operatoren sehen aus wie Funktionen, sind jedoch Teil der Sprache selbst. Funktionen sind normalerweise Teil einer Bibliothek. Für eine detaillierte Erklärung lesen Sie: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar
Vielen Dank. Letzte Frage: Gibt es eine offizielle Dokumentation für solche Betreiber?
Benutzer1527227
5
Ja. Die C-Sprachspezifikation: open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf - Überprüfen Sie Abschnitt 6.5.x
drk.com.ar
2

Sie können verwenden man -wK 'sizeof' | sort -u, um die Artikel zu finden, die enthalten sizeof, aber das wird viele Ergebnisse zurückgeben. Beachten Sie jedoch, dass jeder Artikel über etwas dieses Ding als Barwort hat, das von Leerzeichen umgeben ist. Wir werden nach dem Artikel wie diesem suchen zgrep -P '\ssizeof\s' /usr/share/man/man3/*. Die Suche in Abschnitt 3 liefert jedoch keine nützlichen Informationen, daher werde ich in Abschnitt 7 suchen

$ 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

Wie Sie sehen können, sizeofwird das in der Manpage des Operators erwähnt, da es sich nicht um eine Funktion, sondern um einen Operator handelt und auch ohne Klammern für Bezeichner wie sizeof bufoben funktioniert

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
quelle