MSVC - 检查函数是否实际内联的任何方法?

Ste*_*eve 5 c++ visual-c++

我必须检查编译器是否正在内联函数.有没有办法这样做而不看装配(我不读).我没有选择搞清楚这一点,所以如果我们不能讨论这样做的智慧,我更愿意.谢谢!

DrP*_*zza 6

如果启用警告C4714,C4710和C4711,它应该为您提供有关哪些功能是否内联的相当详细的信息.


Mar*_*ork 5

每个呼叫站点可能可能不同.

编译器可以决定某些父方法值得内联,而其他父方法则不值得内联.因此,如果不检查每个呼叫站点的汇编,您实际上无法确定真正的答案.

因此,您使用的任何工具都可能会给您一个误导性的答案.如果你使用一个工具检查符号的存在(它可能在那里,因为一些呼叫站点需要它,但可能它可能在其他人内联).相反,缺少符号并不意味着方法/函数没有内联它可能是静态的(如文件静态),因此编译器不需要保持符号(但它没有内联).


MSa*_*ers 1

生成“MAP”文件。这为您提供了所有非内联函数的地址。如果您的函数出现在该列表中,则它不是内联的,否则它要么是内联的,要么完全被优化(例如,当它根本没有被调用时)。