Xen*_*eno 11 c++ gcc virtual-functions g++
我注意到如果我运行strings我的程序,由g++输出编译包含它使用的各种类的名称.
strings
g++
该程序是使用-O3和不使用-g或编译的,-p当我删除二进制文件时,类名仍然存在.
-O3
-g
-p
我想知道为什么有必要g++将这些信息存储在二进制文件中?存在的类名似乎都是使用虚函数的类,所以我怀疑这与它有关.
sas*_*alm 13
这可能与RTTI有关,具体来说,RTTI允许您查询给定变量的类的名称.请参阅typeid关键字.如果是这种情况,那么它将解释为什么它只发生在具有虚函数的类中 - RTTI仅适用于具有虚函数的类.
编辑:正如@xeno所指出的,它确实是RTTI,如果添加-fno-rtti类名,则不会出现在字符串输出中.
-fno-rtti
归档时间:
14 年,9 月 前
查看次数:
1068 次
最近记录:
7 年,7 月 前