2014-02-18 3 views
0

Размер пустой структуры равен 0 байт в C, но в C++ это 1 байт. Зачем? Какая разница?Размер пустой структуры в C и C++

+0

В чем разница? Это разные языки. –

+0

ОК! Но новые возможности C - это не что иное, как C++ Correct! если это другой язык, означает, как файлы заголовков поддерживаются c в C++? Существует сходство b/w двух языков. но почему это 0 байт в C? – Ramakrishna

+0

@Ramakrishna: Простой: не все файлы заголовков C поддерживаются в C++. – PlasmaHH

ответ

2

В C его не правильно, вы не можете иметь struct без члена в нем.

C99 says,

Если структура декларирование-лист не содержит именованных пользователей, поведение не определено.

Однако GCC позволяет иметь не член структуры с размером будучи 0. G++ обрабатывает структуру, как будто она содержит один элемент типа char.

Посмотрите на это ранее SO answering почему в C++ размер 1B.

Смежные вопросы