title: Are C structs ABI compliant?
body: <p>Let's say I have a VC++ based executable and library. In order to keep the build process of both components truly independent, I can only work with plain old C types when exchanging data between both binaries. </p>
  
  <p>For example, returning a <code>std::string</code> from the library to the executable is not possible, since a new MSVC runtime would require both components to be updated. Therefore, I would have to resort to a <code>char*</code> type.</p>
  
  <p>However, I've wondered how structs fit into the picture. If I fill these with C types, would they still be ABI compliant? Or does the struct employ certain techniques, which would put them on par with classes, thereby rendering them as non-ABI compliant? Would it make a difference, if I'd return such a struct via a pointer versus a normal return type?</p>
  
  <p>Thanks for your suggestions.</p>