Bug or feature - merging linkage declarations from static forced-inline functions
Freddie Chopin
freddie_chopin@op.pl
Mon Apr 30 19:09:00 GMT 2018
Here's a minimal test case:
-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --
$ cat test.cpp
extern "C"
{
void f1()
{
union some_type{
char a[2];
int b;
} variable;
}
void f2()
{
union some_type{
char a[2];
int b;
} variable;
}
}
$ arm-none-eabi-gcc test.cpp -c
test.cpp: In function 'void f2()':
test.cpp:17:5: warning: conflicting C language linkage declaration
'f2()::some_type variable'
} variable;
^~~~~~~~
test.cpp:9:5: note: previous declaration 'f1()::some_type variable'
} variable;
^~~~~~~~
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (bleeding-edge-toolchain) 8.0.1 20180427 (prerelease)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
-- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 -- >8 --
For the problem to appear:
- functions with the types and variables have to be extern "C"
- the file must be C++
- there has to be both a type and a variable
- the variables must have identical names
Any idea whether GCC is correct in this case or maybe the error is in
the headers?
Regards,
FCh
More information about the Gcc
mailing list