2014-02-18 2 views
0

빈 구조체의 크기는 C에서는 0 바이트이지만 C++에서는 1 바이트입니다. 왜? 차이점이 뭐야?C 및 C++에서 빈 구조체의 크기

+0

다른 점은 무엇입니까? 그들은 다른 언어입니다. –

+0

좋습니다! 하지만 C의 새로운 기능은 C++입니다! 그것이 다른 언어라면 헤더 파일이 C++에서 어떻게 지원되는지를 의미합니까? 두 언어의 유사성이 있습니다. 하지만 왜 C에서 0 바이트입니까? – Ramakrishna

+0

@Ramakrishna : C++에서 모든 C 헤더 파일이 지원되는 것은 아닙니다. – PlasmaHH

답변

2

C에서 올바르지 않으면 회원이없는 struct을 가질 수 없습니다.

C99 says ,

구조체 선언 목록이 더라는 이름의 멤버를 포함하지 않는 경우, 동작은 정의되지 않습니다.

GCC은 크기가 0 인 구성원 구조체를 허용하지 않습니다. G++은 구조체에 char 유형의 단일 멤버가있는 것처럼 처리합니다. 이 이전 SO answering에서

봐 왜 C++에서 크기가 1B입니다.