按值传递的参数在 Visual Studio 2010, C++ 的调试器中显示为通过引用传递
Argument passed by value appears as passed by reference in the debugger in Visual Studio 2010, C++
我目前正在调试一个我已经工作了一段时间的项目,并且,由于我想知道QString命名文件的内容,因此在我监视的变量中编写了file.d,我只是注意到该文件实际上是一个地址。
问题是,文件不是我的代码中的地址。
这是我所在的函数:
void MyClass::updateFile(QString file, QTreeWidgetItem *item)
{
if(file.isEmpty())
return;
QFile f(file); // Line were I had the breakpoint
...
}
所以我检查了堆栈,它真的写了
updateFile(QString *file, QTreeWidgetItem *item)
我首先想到的是编译器优化,但由于我处于调试模式,这似乎不太可能。
你有解释吗?
编辑:当我将签名更改为
void MyClass::updateFile(QString const &file, QTreeWidgetItem *item)
问题消失,调试器和代码再次具有相同的签名。
按值/引用传递是一个C++方面。在程序集级别,一个大结构可能仍会复制到某处并通过指针传递。它C++语义,您正在处理副本,但程序集不能按值传递各种结构。
相关文章:
- 在编译它时显示未定义的引用
- 对象错误地显示为引用?
- Android (ART) 崩溃并显示错误 JNI 在应用程序中检测到错误:jstring 是无效的本地引用
- 当通过引用传递 QObject 时,C++信号的参数在 QML 中显示为"未定义"
- std::tie 在从函数调用传递值时失败,并显示"无法绑定非常量左值引用"
- 为什么下面的代码在通过引用传递时没有显示错误
- 按值传递的参数在 Visual Studio 2010, C++ 的调试器中显示为通过引用传递
- Visual Studio 中的"指向引用的指针"错误不会按发生位置的文件名显示
- 堆栈在函数中弹出仍然显示在主函数中。调用不应该通过引用给定的向量吗
- Linux Flex gcc 编译失败,并显示"未定义对 'TclReError'的引用"
- 引用变量在下一行程序执行后显示未找到的行为
- SHELL_NOTIFYICON:尝试引用不存在的令牌,没有显示图标
- 为什么每次生成时,本地 .NET 程序集在引用列表中(几乎)都显示为损坏
- 使用 Visual Studio 创建的静态库在与代码块一起使用时显示对 Myfunction 的未定义引用
- 带有标准容器和常量引用的c++代码显示出意外的内存
- Visual Studio 2013未显示未引用的变量警告
- 禁止显示编译器警告 声明从未引用的函数
- 尽管netbeans在代码完成中显示了函数,但未定义引用
- 如果类型在声明之前被引用,如何在Xtext IDE中显示错误
- 当我按值传递参数时,c++构建消息显示一个引用参数