> On Jun 15, 2018, at 3:45 PM, Karoly Balogh (Charlie/SGR) > <char...@scenergy.dfmk.hu> wrote: > > The whole idea of a packed record is to ignore alignment and "pack" the > fields ignoring padding and alignment. Use a normal record without > "packed", or add the padding fields manually, if you still have to use a > packed record for whatever reason. > > BTW, $align specifies the alignment in *BYTES* not in bits. So to align to > 32bits you need {$align 4}. But Free Pascal also supports {$packrecords > C}, where it will try to mimic the C compiler's alignment as native to the > target platform. In any unit which needs to interface to a C library, I'd > use {$packrecords C} and no {$align}
Ok, I see now. I tried adding {$packrecords C} in all units but the size still comes back as 24 instead of 32. So what is the C compiler really doing I wonder? I found out through trial and error I need 2 floats in-between both fields to get proper alignment but why is this? I hate to be adding random space into records which may break on other machines or if built with different compilers (I’m using ppcx64 btw if that matters). type TAAPLVertex = record position: vector_float2; padding_0: simd_float; padding_1: simd_float; color: vector_float4; end; Regards, Ryan Joseph _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal