https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87179
Bug ID: 87179
Summary: duplicate extern "C" functions in different namespaces
not flagged as an error
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: tiagomacarios at gmail dot com
Target Milestone: ---
Code below compiles in GCC, but is discarded by clang.
namespace A {
extern "C" int g() { return 1; }
}
namespace B {
extern "C" int g() { return 1; } // ill-formed, the function g with C
language linkage has two definitions
}
clang error:
<source>:6:18: error: redefinition of 'g'
extern "C" int g() { return 1; } // ill-formed, the function g with C
language linkage has two definitions
^
<source>:2:18: note: previous definition is here
extern "C" int g() { return 1; }
^
1 error generated.
Compiler returned: 1
example is a copy and paste from the standard http://eel.is/c++draft/dcl.link#6