C++ 中静态函数调用的编译器优化 [已关闭]

Compiler optimization of static function calls in C++ [closed]

提问人:Nick 提问时间:9/19/2023 最后编辑:user207421Nick 更新时间:9/19/2023 访问量:90

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

2个月前关闭。

有一些函数通过静态调用访问资源,有时会丢失指向它的指针。

这就是为什么我制作了另一个静态函数来跟踪这些调用,因为该资源访问是一个库函数。
Resource* ptr = Application::getResource("name");extern

static Resource* HelperClass::getResource(std::string name)  
{  
    return Application::getResouce(name); 
}

我更改了所有对 to 的调用,以跟踪丢失指针的调试器。Application::getResourceHelperClass::getResource

我现在问自己,如果我在没有调试的情况下构建它,编译器是否将其优化回仅应用程序资源调用,或者我应该更改为 .处理此问题以保持最佳性能的最佳方法是什么,同时又能够使用断点跟踪该调用?staticinline

C++ 编译器优化 静态方法

评论

0赞 πάντα ῥεῖ 9/19/2023
无论如何,它很可能是内联的。
1赞 HolyBlackCat 9/19/2023
然后我会去掉这个功能。把它放在后面,或者别的什么。#ifdef
2赞 user207421 9/19/2023
定义“有时会丢失指向它的指针”。
1赞 j6t 9/19/2023
由于您是按值传递的,因此额外的函数调用不一定是微不足道的。您必须查看每个呼叫站点的程序集,才能知道它是否是内联的。name
1赞 Swift - Friday Pie 9/19/2023
如果 a) 您有该库的.pdb,则可以中断 dll 函数调用。然后,只需添加一个完全修饰的名称作为断点。b) 使用类似于 stackoverflow.com/questions/37202813/ 的地址技巧...

答: 暂无答案