The following code defines the same external function twice, once with C++
linkage, and once with C linkage. GCC 4.1.1 does not complain.
void
foo ()
{
extern int f(int);
}
extern "C" int f(int i); // conflict
However, the following example is properly rejected:
extern int f(int);
extern "C" int f(int i); // conflict
EDG rejects both examples.
It would appear that the only difference is that the C++ function is not
visible in the scope when the C function is defined, but they can't both have
external linkage.
--
Summary: linkage confused with scope?
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andrew dot stubbs at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32042