https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102775
Harald van Dijk <harald at gigawatt dot nl> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |harald at gigawatt dot nl
--- Comment #3 from Harald van Dijk <harald at gigawatt dot nl> ---
Here is another example:
$ cat test.cc
struct S {
int32_t i;
} s;
int main() {
return s.i;
}
$ g++ -c test.cc
test.cc:2:3: error: ‘int32_t’ does not name a type
2 | int32_t i;
| ^~~~~~~
test.cc:1:1: note: ‘int32_t’ is defined in header ‘<cstdint>’; this is probably
fixable by adding ‘#include <cstdint>’
+++ |+#include <cstdint>
1 | struct S {
test.cc: In function ‘int main()’:
test.cc:5:12: error: ‘struct S’ has no member named ‘i’
5 | return s.i;
| ^
The second diagnostic is useless here, ideally GCC would continue after the
first error as if S had been defined with a valid definition of the i field.
(Incidentally, the fix-it here also looks wrong. <cstdint> is not required to
make types available in the global namespace. It should either suggest
<cstdint> with std::int32_t, or <stdint.h>.)