///////////////////////////////////////////////
#include <stdio.h>
#include <typeinfo>
class _A12345 {
virtual ~_A12345() {}
};
extern "C" {
void foo() { }
void foo2() { }
}
#define ClassName _A12345
int main() {
printf("%s\n",typeid(ClassName).name());
printf("%s\n",typeid(foo).name());
printf("%s\n",typeid(foo2).name());
return 0;
}
///////////////////////////////////////////////
Output:
7_A12345
FvvE
FvvE
1. I think should be "_A12345" instead "7_A12345".
2. foo/foo2 is different types so names must have difference too.
3. extern "C" i think should turn off name mangling, but it isn't.
--
Summary: typeid(*).name() returns wrong values
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andry at inbox dot ru
GCC host triplet: i686-pc-cygwin
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35060