데이터베이스를 구축하는데 있어 자료구조는 공간관리 파트에서만 하면 될 줄 알았는데..
내 작업 범위에 자료구조의 이해가 필요한 부분이 있었다.
lr parser가 아직 미구현되어 있어 대충 if ~ then ~으로 비슷하게 동작하는 parser를 구현해두었는데 여기서 offset을 입력해야 한다.
이에 대해 정확하게 하기 위해 조금 알아보니 시스템 별로 다르기도 하단다;;;;;
여튼 일단은 linux에서 구현하는 중이라 linux에 국한된 offset 계산법을 알아야 한다.
이를 공부하기 위해서 문헌을 찾아보는게 가장 좋지만 몸으로 계산해서 규칙을 찾아내 보려고 한다.
물론 대강의 규칙은 수석연구원분이 이미 알려주셨기에 가능했다.
offset을 알아내는데 쓰인 offsetof 매크로이다. 간단한 예제를 아래와 같이 작성했다.

#include <stddef.h>
#include <stdio.h>

struct foo 
{
    short       s;
    int         i;
    double      d;
    float       f;
    long        l;
    char        c[10];
};


int main()
{
    printf("short  size:%lu offset:%lu\n", (unsigned long)sizeof(short), (unsigned long)offsetof(struct foo, s));
    printf("int    size:%lu offset:%lu\n", (unsigned long)sizeof(int), (unsigned long)offsetof(struct foo, i));
    printf("double size:%lu offset:%lu\n", (unsigned long)sizeof(double), (unsigned long)offsetof(struct foo, d));
    printf("float  size:%lu offset:%lu\n", (unsigned long)sizeof(float), (unsigned long)offsetof(struct foo, f));
    printf("long   size:%lu offset:%lu\n", (unsigned long)sizeof(long), (unsigned long)offsetof(struct foo, l));
    printf("char   size:%lu offset:%lu\n", (unsigned long)sizeof(char[10]), (unsigned long)offsetof(struct foo, c));
    return 0;
}