C++ offsetof

mohadang·2022년 10월 10일
0

C++

목록 보기
23/48
post-thumbnail

offsetof 매크로

멤버들의 상대적 위치 구할 수 있음
특정 멤버가 본인을 포함한 자료 구조의 시작점에서부터 몇 바이트만큼 떨어져 있는지 알려줌
직렬화(serialize)나 역직렬화(deserialize)를 할 때 꽤나 유용

struct Student {
  const char* ID;
  const char* Name;
  int CurrentSemester;
};

int main() {
  std::cout << "ID offset : " << offsetof(Student, ID) << std::endl;
  std::cout << "Name offset : " << offsetof(Student, Name) << std::endl;
  std::cout << "CurrentSemester offset : " << offsetof(Student, CurrentSemester) << std::endl;
}

/*
ID offset : 0
Name offset : 4
CurrentSemester offset : 8
대략적으로 offset을 계산하면 위의 결과겠지만
컴파일러마다 반드시 위와 같은 결과를 보장하지는 않음.
*/
profile
mohadang

0개의 댓글