我知道编译器可能会也可能不会执行函数的内联扩展,无论程序员是否请求。
我只是好奇地想知道,有什么方法可以让程序员确定编译器已经内联了一个特定的函数吗?
发布于 2010-03-05 12:36:12
除了查看生成的代码之外,没有。有些实现可能会提供这些信息,但标准并不要求提供这些信息。
像inline或register (shudder)这样的东西是对编译器的建议,它可以自由地接受它们,忽略它们,甚至对你撒谎,说它是在你背后偷偷做而没有做的:-)
我倾向于不使用这样的特性,因为我怀疑编译器通常比我更清楚如何最大限度地提高代码的性能。
发布于 2010-03-05 13:40:52
您可以分析您的代码,并查看感兴趣的函数是否出现在调用堆栈中。不过,我想如果你的堆栈采样率不够高,那是不能保证的。
但这可能证明它是内联的:如果您知道A调用B,而后者调用C,而A从不直接调用C,如果您看到A在调用堆栈上调用C,那么您就知道B是针对该调用的内联。
发布于 2010-03-05 12:37:31
将编译器设置为生成汇编器代码,并在此处进行检查。
https://stackoverflow.com/questions/2384571
复制相似问题