Both clang and gcc's stddef.h are designed to be included multiple times. If any of the __need_* macros are defined, only those types are provided (e.g __need_size_t). Remove the #pragma once, ptraddr_t is guarded by _PTRADDR_T_DECLARED anyways. Also use __SIZE_TYPE__ instead of size_t since it's not guaranteed to be defined.
Edit: put commit message in a code block to avoid markdown shenanigans