我有重载函数,例如:
void f(int)
void f(int, int)
void f(int, float)
如何编译它,以便我可以看到损坏的输出? 像这样的东西:
void f(int) should show: ?f@@YAXH@Z(int)
例如,要查看预处理器输出,我们使用 -E
,汇编器输出 -s
,名称错位输出是什么?
P.S: 平台是 Linux
编辑:
根据这里的答案,我们可以:
void func(int);
void func(int, int);
void func(void);
void func(char);
[root@localhost ~]# cat a.map | grep func
0x0804881a _Z4funcc
0x08048790 _Z4funcv
0x080487be _Z4funcii
0x080487ec _Z4funci
最佳答案
对于 GCC 尝试使用:
-Xlinker -Map=output.map
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
这将生成一个映射文件,其中将包含所有损坏的符号名称。
对于 MSVC:
http://msdn.microsoft.com/en-us/library/k7xkk3e2(v=vs.80).aspx
这将生成如下内容:
0002:00094190 ??0SerializationException@EM@@QAE@ABV01@@Z 10148190 f i y:foo.obj
关于c++ - 如何在 gcc (g++) 中编译 C++ 代码以查看重载函数的名称修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302483/