title: C vs C++ struct alignment
body: <p>I've been asked in a recent interview about C++ struct fields alignment and theoretized that C and C++ follows the same strategy in struct packing. </p>
  
  <p>Hovewer, it was the wrong assumption. The interviewer said that in general C and C++ are packing structs in different ways and we should never expect the opposite. IMHO it's strange statement. There is no <code>pack "C"</code> qualifier for structs in C++ for using in bilingual C/C++ header files.</p>
  
  <p>So in practice it could mean that you can't create a struct in C++ and pass it to a C library because in general its fields will be aligned in a different way and have different offsets. But, in fact, most programmers seriously rely on this interoperability up to the point when they convert a pointer to a C <a href="http://en.wikipedia.org/wiki/Plain_old_data_structure" rel="noreferrer">POD</a> struct to a reference to C++ wrapper around this struct with some helper methods. Can you please clarify this matter?</p>