gpt4 book ai didi

c++ - 为什么 g++ 在编译后的二进制文件中存储类名?

转载 作者:可可西里 更新时间:2023-11-01 15:02:53 27 4
gpt4 key购买 nike

我注意到,如果我在由 g++ 编译的程序上运行 strings,输出包含它使用的各种类的名称。

程序是用 -O3 编译的,没有 -g-p,当我去掉二进制。

我想知道为什么 g++ 必须将此信息存储在二进制文件中?出现的类名似乎都是使用虚函数的类,所以我怀疑这与它有关。

最佳答案

这可能与 RTTI 有关,具体来说,RTTI 允许您查询给定变量的类的名称。查看typeid关键词。如果是这种情况,那么它就可以解释为什么它只发生在具有虚函数的类中——RTTI 仅适用于具有虚函数的类。

编辑:正如@xeno 指出的那样,它确实是 RTTI,如果您添加 -fno-rtti,则类名不会出现在字符串输出中。

关于c++ - 为什么 g++ 在编译后的二进制文件中存储类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com