[Bug c/71552] Confusing error for incorrect struct initialization
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 17 04:04:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71552
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |diagnostic
Status|UNCONFIRMED |RESOLVED
CC| |msebor at gcc dot gnu.org
Resolution|--- |WONTFIX
Severity|minor |enhancement
--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
Unfortunately, C allows the implicit conversion of integers to pointers. This
can be seen at local scope where GCC diagnoses the initialization with just a
warning: initialization makes pointer from integer without a cast.
At the same time, C doesn't consider pointers to be valid constant integer
expressions and so it doesn't allow their use in initializers of static
integers.
GCC normally detects and issues errors before warnings, and so the submitted
test case is rejected on those grounds. The error causes the internal
representation of the initializer expression to be replaced with a special
error node which prevents any further diagnostics. With this in mind, I don't
think it's feasible to change the diagnostic. What might be possible to do is
to treat pointers in initializers as constant expressions as an extension, but
such a change that should be considered on its own merits rather than with the
goal of (only) improving diagnostics. In light of this, I resolve this
enhancement request as WontFix.
More information about the Gcc-bugs
mailing list