C แมโครห้องสมุด - offsetof ()
C ห้องสมุดมาตรฐาน - <stddef.h>
ลักษณะ
C แมโครห้องสมุดoffsetof (ประเภทสมาชิก designator) จะสร้าง size_t ชนิดจำนวนเต็มคงที่ซึ่งเป็นสมาชิกของโครงสร้างของโครงสร้างที่เกี่ยวข้องกับการเริ่มต้นไบต์ชดเชยสมาชิกโดยสมาชิก designator รับในชื่อของประเภทของโครงสร้างที่จะได้รับ
คำแถลง
นี่คือ offsetof () คำสั่งแมโคร
offsetof(type, member-designator)
พารามิเตอร์
- ประเภท - นี้เป็นชนิดที่ระดับนั้นสมาชิกที่ designator เป็นสมาชิกที่ถูกต้องของตัวบ่งชี้
- สมาชิก designator - ซึ่งเป็นสมาชิกของตัวบ่งชี้ประเภทระดับ
ราคาย้อนกลับ
แมโครนี้ส่งกลับค่าของชนิดsize_t แสดงประเภท offset ของสมาชิก
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึง offsetof () การใช้งานแมโคร
#include <stddef.h> #include <stdio.h> struct address { char name[50]; char street[50]; int phone; }; int main() { printf("address 结构中的 name 偏移 = %d 字节。\n", offsetof(struct address, name)); printf("address 结构中的 street 偏移 = %d 字节。\n", offsetof(struct address, street)); printf("address 结构中的 phone 偏移 = %d 字节。\n", offsetof(struct address, phone)); return(0); }
Let 's รวบรวมและเรียกใช้โปรแกรมข้างต้นซึ่งจะส่งผลต่อไปนี้:
address 结构中的 name 偏移 = 0 字节。 address 结构中的 street 偏移 = 50 字节。 address 结构中的 phone 偏移 = 100 字节。