Как я могу сравнить спецификации C / C99 со спецификациями C ++? - PullRequest
4 голосов
/ 09 марта 2011

Мне нужно убедиться, что я могу использовать союзы определенным образом.

Для C99 этого ответа достаточно: Выравнивание элементов объединения

C99 - раздел 6.7.2.1 Структура и Спецификаторы объединения (параграф 14):

Указатель на объект объединения, соответственно конвертируется, указывает на каждый из его члены (или если участник является битовым полем, затем к единице, в которой он находится), и наоборот.

Может кто-нибудь помочь мне найти эквивалентную гарантию для C ++?

В целом, есть ли хороший источник для поиска ссылок на разделы / абзацы для стандартов C ++, которые эквивалентны известной функции в C?

Большое спасибо.

Ответы [ 2 ]

6 голосов
/ 09 марта 2011

В C ++ (14882: 2003) это разделено на два абзаца:

9,5 [class.union] / 1

Каждый элемент данныхвыделяется так, как если бы он был единственным членом структуры.

9.2 [class.mem] / 17

Указатель на POD-struct объект, соответствующим образом преобразованный с использованием reinterpret_cast, указывает на его начальный элемент (или, если этот элемент является битовым полем, а затем на модуль, в котором он находится) и наоборот.не слышал о перекрестной ссылке между C и C ++, это может быть нетривиальным, как показывает этот пример.

0 голосов
/ 09 марта 2011

К вашему сведению, если вы хотите проверить стандарт C ++, к сожалению, он не доступен бесплатно. Вы должны заплатить комиссию, чтобы получить копию стандарта. Тем не менее, окончательный вариант (который до утверждения) доступен онлайн: для C ++ 99 http://www.kuzbass.ru:8086/docs/isocpp/, для C ++ 0x http://www.open -std.org / jtc1 / sc22 / wg21 / docs /papers/2010/n3092.pdf.

...