The warning is harmless. But if some day the DT_* values get to get actually used, there is a bug here. I acknowledge there is a problem.
However, 'typeof' works only GNU or GNU-compatible compilers. Whereas d_type exists on many platforms (Linux, macOS, FreeBSD, NetBSD, OpenBSD, Cygwin, Android), and is 'unsigned char' = 'uint8_t' on all these platforms. Bruno