Type size_t is used in the file without importing any header which defines it. This only works when the translation unit includes one of the appropriate headers anyway or when the appropriate header is included internally by other standard C headers; none of those strategies should be relied upon.