Only complex data types can be defined as structures, primitive data types are just conventions of how to lay out bits in memory. The details of those conventions are defined differently in each compiler, across dozens of files handling the different machine code implementations of operations defined on those primitive types.
Indeed there will likely be hundreds of files within gcc in which parts of the implementation of an int
is defined: each operation (cast to char/uint/double/float/etc, plus, times, subtract, divide etc) on each of the dozens of architectures (x86, x86-64, PowerPC) will need to have code generation, optimisations, widths and more defined.
I'd recommend getting a basic understanding of how a compiler works (the standard passes: tokenize, parse, analyse, IL generation, optimisation, code generation) the class I took on it used The Dragon Book but I've heard others say it's a little dated.