Interestingly, Keil C51 does not ship with C99 compliant stdint.h and stdbool.h header files.
But there is no need to dispair. The stdint.h from SDCC seems to work ok however I personally would not trust the pointer types and widths. However in a context of a 8051 MCU, I’d rather introduce my own data type for pointers anyway due to the different possible memory spaces. A generic pointer will have to carry section information that has to be evaluated at runtime. A special typed pointer won’t waste as many resources.
The stdbool.h from SDCC can be used as well. Just make sure to be Keil compatible and use the following definitions:
#define _Bool bit
#define BOOL bit
#define bool _Bool
#define __bool_true_false_are_defined 1