https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84500
Bug ID: 84500 Summary: diagnostic says "array of chars" for arrays of wchar_t, char16_t and char32_t Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- #include <stddef.h> #include <uchar.h> int main() { wchar_t w[3] = L"abcd"; char16_t u16[3] = u"abcd"; char32_t u32[3] = U"abcd"; } a.c: In function ‘main’: a.c:4:18: warning: initializer-string for array of chars is too long wchar_t w[3] = L"abcd"; ^~~~~~~ a.c:5:21: warning: initializer-string for array of chars is too long char16_t u16[3] = u"abcd"; ^~~~~~~ a.c:6:21: warning: initializer-string for array of chars is too long char32_t u32[3] = U"abcd"; ^~~~~~~ Also: /* { dg-options "-Wc++-compat" } */ #include <stddef.h> int main() { char c[3] = "abc"; wchar_t w[3] = L"abc"; } a.c: In function ‘main’: a.c:4:15: warning: initializer-string for array chars is too long for C++ [-Wc++-compat] char c[3] = "abc"; ^~~~~ a.c:5:18: warning: initializer-string for array chars is too long for C++ [-Wc++-compat] wchar_t w[3] = L"abc"; ^~~~~~ Note "array chars" not "array of chars".