title: FreePascal PACKRECORDS directive to Delphi
body: <p>I'm trying to use the FreePascal 2.2.2 <code>ibase60.inc</code> from the bottom link of <a href="https://stackoverflow.com/a/423877/512728">this answer</a> in Delphi Tokyo (A 32-bit Windows VCL application).</p>
  
  <p>It contains the directive <code>{$PACKRECORDS C}</code>. The <a href="https://www.freepascal.org/docs-html/prog/progsu60.html" rel="nofollow noreferrer">documentation</a> says:</p>
  
  <blockquote>
    <p>The special value C is used to specify alignment as by the GNU CC compiler. It should be used only when making import units for C routines. </p>
  </blockquote>
  
  <p>Googling for <a href="https://www.google.com/search?q=gnu+cc+struct+alignment" rel="nofollow noreferrer">gnu cc struct alignment</a> I read e.g. in <a href="http://www.catb.org/esr/structure-packing/" rel="nofollow noreferrer">The Lost Art of C Structure Packing</a> that on modern processors</p>
  
  <blockquote>
    <p>... basic C types on x86 and ARM are self-aligned. Pointers, whether 32-bit (4-byte) or 64-bit (8-byte) are self-aligned too.</p>
  </blockquote>
  
  <p>Is there anything I have to replace that code directive with to ensure proper (non-)packing in Delphi for calling those methods in the InterBase/Firebird DLLs? Or can I assume that Delphi behaves like GNU CC?</p>
  
  <p><a href="http://svn.freepascal.org/cgi-bin/viewvc.cgi/tags/release_2_2_2/packages/ibase/src/ibase60.inc?revision=11487&amp;view=markup" rel="nofollow noreferrer">Here</a> is the complete code for that <code>ibase60.inc</code> file.</p>