Example:
module main;
struct Foo
{
int a;
}
extern (C) void bar(Foo);
module foo;
struct Foo
{
int a;
}
extern (C) void bar(Foo);
$ ldc2 main.d foo.d
main.d(8): Error: Function type does not match previously declared function with the same mangled name: bar
C functions doesn't have a mangling. I suspect the mangled name that would be used for a D function for the Foo struct is used.