临时对象创建 有人知道是否可以启用任何C++上的任何类型的日志记录 兼容编译器(Visual Studio、g++等),以便我可以发现何时创建临时对象
例如: 假设我有一个函数临时对象创建 有人知道是否可以启用任何C++上的任何类型的日志记录 兼容编译器(Visual Studio、g++等),以便我可以发现何时创建临时对象,c++,logging,g++,rvalue-reference,temporary-objects,C++,Logging,G++,Rvalue Reference,Temporary Objects,例如: 假设我有一个函数f(charx),但我用f(46) 我会在日志中看到- 为int@function param f(46)创建的临时字符 我已经通读了VS编译器开关选项,但似乎不是这样 一个选择 我知道在新标准中有一个rvalue reference(&&&)的概念,它可以用于检测移动语义的大多数临时变量,但这涉及到添加新的代码/兼容编译器 那么这能做到吗?或者这是编译器的特权知识吗?更有用的是IDE中的内联注释(因为我假设您希望通过最小化这些临时值来进行优化)。在实践中,最简单的方法是
f(charx)
,但我用f(46)
我会在日志中看到-
为int@function param f(46)创建的临时字符
我已经通读了VS编译器开关选项,但似乎不是这样
一个选择
我知道在新标准中有一个rvalue reference
(&&&)的概念,它可以用于检测移动语义的大多数临时变量,但这涉及到添加新的代码/兼容编译器
那么这能做到吗?或者这是编译器的特权知识吗?更有用的是IDE中的内联注释(因为我假设您希望通过最小化这些临时值来进行优化)。在实践中,最简单的方法是修改GCC或g++并使它们与visualstudio插件或其他东西对话。他们可以用寄存器分配和所有内容进行注释。哇,那真的很有帮助
除非有这样的努力,我也不知道,最好的方法就是学会阅读汇编。在VisualStudio中,您可以让编译后的程序集与源代码内联显示,这非常有用 即使是很短的代码位也可以生成大量的副本和临时文件。这没有你想象的那么有用。46
是一个完全有效的char
值,按值传递给函数是正确的做法。你确定你没有读过某个C程序员写的FUD文章吗?很抱歉回复得很晚-我知道它会生成大量数据,但它会很有用。无论如何,我认为在这个阶段,这是无法做到的,所以我可能会考虑自己去做。无论如何,谢谢你的帮助。@Bo,是的,那是错的,我应该键入f(const char&x)