หน้าคนสำหรับฟังก์ชัน 'sizeof` C อยู่ที่ไหน


10

ทำไมไม่มี man page สำหรับsizeofฟังก์ชั่น C?

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

$ man sizeof
No manual entry for sizeof

ฉันจะดูหน้าคนสำหรับฟังก์ชั่นอื่น ๆ เช่น C mallocถ้าผมทำงานman 3 mallocและคำสั่งที่คล้ายกัน sizeofแต่ไม่มีอะไร


เหตุใดคุณจึงต้องการดูหน้า man Linux สำหรับสิ่ง C เว้นแต่จะเป็นสิ่งที่ POSIX ที่เกี่ยวข้องกับการอ่านจากเอกสารมาตรฐานจะดีกว่า
phuclv

คำตอบ:


9

sizeofไม่ใช่ฟังก์ชั่น มันเป็นโอเปอเรเตอร์: http://en.wikipedia.org/wiki/Sizeof


1
โอเปอเรเตอร์เป็นอีกคำสำหรับแมโครหรือไม่ ผู้ประกอบการหมายถึงอะไรกันแน่?
user1527227

1
ไม่แมโครคือข้อความบางส่วน (ไม่ใช่คำที่สงวนไว้หรือตัวดำเนินการหรือฟังก์ชั่น) ตีความโดยพรีคอมไพเลอร์และขยายเป็นสิ่งที่สามารถคอมไพล์ได้ ผู้ประกอบการดูเหมือนว่าฟังก์ชั่น แต่พวกเขาเป็นส่วนหนึ่งของภาษาเอง ฟังก์ชั่นมักจะเป็นส่วนหนึ่งของห้องสมุด สำหรับคำอธิบายโดยละเอียดอ่าน: en.wikipedia.org/wiki/Operator_(computer_programming)
drk.com.ar

ขอบคุณ คำถามสุดท้าย: มีเอกสารอย่างเป็นทางการสำหรับผู้ประกอบการเช่นนี้หรือไม่?
user1527227

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แต่จะให้ผลลัพธ์จำนวนมาก แต่สังเกตเห็นว่าบทความเกี่ยวกับสิ่งที่ทุกคนจะมีอีกสิ่งหนึ่งที่เป็น bareword 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ถูกกล่าวถึงในหน้า man operator, เพราะมันไม่ใช่ฟังก์ชั่น แต่เป็น operatorและมันทำงานได้แม้ไม่มีวงเล็บสำหรับตัวระบุเช่น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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.