gctypes.h needs to be included before using u32 type.
If you don't do it, you will get these two compiler errors:
vpad_functions.h:31:8: error: 'u32' does not name a type
extern u32 vpad_handle;
^~~
vpad_functions.h:32:8: error: 'u32' does not name a type
extern u32 vpadbase_handle;
^~~
gctypes.h needs to be included before using u32 type.
If you don't do it, you will get these two compiler errors: