offsetof(3)

الاسم
offsetof - إزاحة عضو في بنية

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <stddef.h>

size_t offsetof(type, member);

الوصف
تعيد الكلية offsetof() إزاحة الحقل member من بداية البنية type.

هذه الكلية مفيدة لأن أحجام الحقول المكونة للبنية قد تختلف عبر التطبيقات، وقد تُدرج المصرّفات أعدادًا مختلفة من البايتات الحشوية بين الحقول. وبالتالي، لا تُعطى إزاحة عنصر بالضرورة بمجموع أحجام العناصر السابقة.

سينجم خطأ في المصرّف إذا لم يكن member محاذيًا لحد بايت (أي إذا كان حقل بتات).

قيمة الإرجاع
تعيد offsetof() إزاحة member المعطى ضمن type المعطى، بوحدات البايت.

المعايير
C11, POSIX.1-2008.

التاريخ
POSIX.1-2001، C89.

أمثلة
على نظام Linux/i386، عند الترجمة باستخدام خيارات gcc(1) المبدئية، يُنتج البرنامج أدناه المخرجات التالية:

    $ ./a.out
    offsets: i=0; c=4; d=8 a=16
    sizeof(struct s)=16

  مصدر البرنامج
    #include <stddef.h>
    #include <stdio.h>
    #include <stdlib.h>

    int
    main(void)
    {
        struct s {
            int i;
            char c;
            double d;
            char a[];
        };

        /* Output is compiler dependent */

        printf("offsets: i=%zu; c=%zu; d=%zu a=%zu\n",
               offsetof(struct s, i), offsetof(struct s, c),
               offsetof(struct s, d), offsetof(struct s, a));
        printf("sizeof(struct s)=%zu\n", sizeof(struct s));

        exit(EXIT_SUCCESS);
    }

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.