Openusb tries to use standard C types wherever possible to avoid complicating things. Where standard C types are insufficient, libopenusb uses abstracted types to ensure portability and forward compatibility.