Structure layout
 

Structure layout must match the target ABI when FreeBASIC code talks to C libraries, system calls, graphics backends, sound backends, or binary file formats. Do not assume that a structure layout proven on one CPU is correct on another CPU.

What affects layout

  • Field type and size.
  • Field alignment.
  • Structure packing.
  • Pointer size.
  • Calling convention and ABI family.
  • Compiler-specific C headers for the target platform.

Modern targets

Layout-sensitive code should be checked on every advertised CPU family. That includes 32-bit and 64-bit x86, ARM, AArch64, PowerPC-family targets, MIPS-family targets, s390x, WebAssembly/JavaScript where applicable, and the BSD, Haiku, Solaris-like, DOS, Windows, and mobile targets supported by the tree.


Practical rule

When a structure is shared with C, prefer a tiny C probe or a FreeBASIC test that checks sizeof and important field offsets on the real target. Guessing from a similar platform is not enough for release work.