There are some cross definitions, however, compiler will successfully work. Some of the #include within a header file are not placed at the top of the file.
Most headers are recurse protected either by compiler preprocessor (we have past the jurassic period), or simply by the
the point is sequence。Under these conditions,compiler will compile stm32f4xx_hal.h first。but the defined structure:HAL_StatusTypeDef is in stm32f4xx_hal_def.h。like recurse