4

有谁知道是否可以在任何符合 C++ 的编译器(Visual Studios、g++ 等)上启用任何类型的日志记录,以便我可以发现何时创建临时对象?

例如:

假设我有一个函数f(char x),但我称之为f(46)

我会在日志中看到——

temporary char created promoting int @ function param f(46)(或类似的东西)

我已通读 VS 编译器开关选项,看来这不是一个选项。

我知道在新标准中有一个rvalue reference(&&) 的概念,可用于检测大多数临时移动语义,但这涉及添加新代码/兼容编译器。

那么这可以做到吗?或者这是编译器的特权知识?

4

1 回答 1

0

IDE中的内联注释会更有用(因为我假设您想通过最小化其中一些临时来进行优化?)。在实践中,最简单的方法是修改 GCC 或 g++ 并让它们与 Visual Studio 插件或其他东西对话。他们可以用寄存器分配和所有东西来注释。哇,那真的很有帮助。

除非有这样的努力,而且我不知道,最好的方法就是学习阅读程序集。在 Visual Studio 中,您可以让编译后的程序集与源代码内联显示,这非常有用。

于 2012-10-25T14:48:58.317 回答