我有以下(完全无用的)测试代码,我正在通过gprof运行。
#include <iostream>
using namespace std;
int doFunc(int x)
{
return x + 9;
}
int main()
{
return 0;
}
从不使用函数doFunc,但_GLOBAL__SUB_I_Z6doFunci错位名称版本显示为被调用一次。当我实际调用函数时,它只显示为Z6doFunci,它被调用适当的次数,并且_GLOBAL_SUB版本不会被调用。
我注意到,通过删除上面代码中的iostream,函数永远不会被调用(没有_GLOBAL__SUB_版本)。因此,我怀疑它与iostream中包含的全局对象的初始化有关,但除此之外,我感到难过。发生了什么事?