размер пустой структуры в C и C ++ [дубликаты]

0

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

  • 0
    Какая разница? Это разные языки.
  • 0
    Хорошо! Но новые возможности C - это только C ++ Correct! если это другой язык, значит, как поддерживаются заголовочные файлы c в C ++? Существует сходство ч / б двух языков. но почему это 0 байт в C?
Показать ещё 1 комментарий
Теги:

1 ответ

3

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

C99 says,

Если в списке struct-declaration-list нет именованных членов, поведение не определено.

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

Посмотрите на это предыдущее SO, отвечая на вопрос, почему в C++ размер равен 1B.

  • 0
    Clang также напечатает 1 байт, если вы примените sizeof() в пустой структуре (должно быть одинаковым для класса).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню