В недавнем интервью мне рассказали о выравнивании структурных полей С++ и теоретизировали, что C и С++ следуют той же стратегии в структурированной упаковке.
Ховер, это было неправильное предположение. Интервьюер сказал, что в целом C и С++ упаковывают структуры по-разному, и мы никогда не должны ожидать противоположного. ИМХО это странное выражение. Существует не pack "C"
квалификатор для структур в С++ для использования в двуязычных заголовочных файлах C/С++.
Таким образом, на практике это может означать, что вы не можете создать структуру на С++ и передать ее в библиотеку C, потому что в целом ее поля будут выровнены по-другому и будут иметь разные смещения. Но на самом деле большинство программистов серьезно полагаются на эту интероперабельность до того момента, когда они преобразуют указатель на структуру C POD в ссылку на С++ обертка вокруг этой структуры с помощью некоторых вспомогательных методов. Не могли бы вы прояснить этот вопрос?