Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
临时对象创建 有人知道是否可以启用任何C++上的任何类型的日志记录 兼容编译器(Visual Studio、g++等),以便我可以发现何时创建临时对象_C++_Logging_G++_Rvalue Reference_Temporary Objects - Fatal编程技术网

临时对象创建 有人知道是否可以启用任何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)