programing

C/C++ 구조물 간격띄우기

topblog 2023. 8. 16. 21:54
반응형

C/C++ 구조물 간격띄우기

구조의 인스턴스를 할당하지 않고 구조 내 필드의 오프셋을 알려줄 수 있는 코드를 찾고 있습니다.

IE: 지정됨

struct mstct {
    int myfield;
    int myfield2;
};

나는 쓸 수 있습니다:

mstct thing;
printf("offset %lu\n", (unsigned long)(&thing.myfield2 - &thing));

그리고 getoffset 4생산을 위하여.그것 없이 어떻게 할 수 있습니까?mstct thing선언/할당?

나는 그것을 알고 있습니다.&<struct>항상 구조의 첫 번째 필드의 첫 번째 바이트를 가리키는 것은 아니므로 나중에 설명할 수 있습니다.

() 매크로의 표준 오프셋(instddef.h)은 어떻습니까?

편집: 어떤 이유로 () 매크로의 오프셋을 사용할 수 없는 사용자는 다음과 같은 방법을 사용하여 효과를 얻을 수 있습니다.

#define OFFSETOF(type, field)    ((unsigned long) &(((type *) 0)->field))

네, 다음을 사용합니다.offsetof(적어도 GNU CC와 함께) C와 C++ 코드 모두에서 사용할 수 있는 매크로:

offsetof(struct mstct, myfield2)

printf 파일: %d\n", &(mstct*0)->myfield2);

언급URL : https://stackoverflow.com/questions/142016/c-c-structure-offset

반응형