visualstudio中输入2显示正确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了visualstudio中输入2显示正确相关的知识,希望对你有一定的参考价值。

参考技术A 这个问题可能需要更多的上下文信息才能确定答案。如果您是在 Visual Studio 中编写 C++ 代码,并且输入了以下内容:

```c++
#include <iostream>
using namespace std;

int main()

cout << 2;
return 0;

```

那么,程序将输出数字 "2",因为 `cout` 是 C++ 标准库中用于输出数据的对象,而 `<<` 运算符则表示将数据插入到输出流中。

但是,如果您遇到了其他情况或者有其他具体要求,请提供更多细节和背景信息以便我们给出更准确的回答。

为啥 VS2015 调试器不能在监视窗口中正确显示函数地址?

【中文标题】为啥 VS2015 调试器不能在监视窗口中正确显示函数地址?【英文标题】:Why doesn't VS2015 debugger show the function address correctly in the watch window?为什么 VS2015 调试器不能在监视窗口中正确显示函数地址? 【发布时间】:2018-01-29 14:50:47 【问题描述】:

Visual Studio 2015 调试器中的 C++ 代码。平台:Window 10

监视窗口显示:

名称:functionPointer :0x012812d0 类型:void(*)(float)

名称:printStuff :0x01282440 类型:void(float)

名称:&printStuff :0x01282440 类型:void(*)(float)

但是,输出窗口显示:

函数指针 = 012812D0 printStuff = 0x012812D0 &printStuff = 0x012812D0 这是打印功能

#include<iostream> 
using namespace std;
void printStuff(float)

    cout << "This is the print stuff function." << endl;


const float PI = 3.1415926f;

int main()

    void(*functionPointer)(float); // *functionPointer is a pointer
    functionPointer = printStuff;  // *functionPointer point to function printstuff
    cout << "functionPointer = " << functionPointer << "  " << "printStuff = " << printStuff << "  " << "&printStuff = " << &printStuff << endl;
    functionPointer(PI);

    return 0;

输出

【问题讨论】:

请显示文本而不是图像(Visual Studio 允许您从监视窗口复制文本) @P.Zhang 请不要将冗长的信息放入 cmets 但edit您的问题。 监视窗口显示: 名称:functionPointer 值:0x012812d0 jan29.exe!printStuff(float) 类型:void()(float) 名称:printStuff 值:0x01282440 jan29.exe !printStuff(float) 类型:void(float) 名称:&printStuff 值:0x01282440 jan29.exe!printStuff(float) 类型:void()(float) 但是,输出窗口显示:“functionPointer = 012812D0 printStuff = 0x012812D0 &printStuff = 0x012812D0 这是打印功能” @MichaelWalz 是的,但是踏入它不会导致您进入printStuff,而是通过一条jmp 指令进入调度表条目,该指令将导致printStuff @VTT 我做到了这一点,并验证了发布中没有发生这种情况。所以我们得到这种行为似乎很好。但是,为什么它在调试中使用调度表 - Edit&Continue(逻辑怀疑)似乎并非如此。 【参考方案1】:

这种行为似乎是因为增量链接。当它被启用时,该函数被组装在一个内存地址中,另一个地址包含一个跳转表条目,其中一条跳转指令指向“真实”地址。该函数总是通过调用跳转表来调用。如果您禁用增量链接,则通过跳转表的“绕道”消失,并且您的示例案例仅显示一个地址。

其他所有东西似乎都显示了跳转表的地址,但 'printStuff' 和 '&printStuff' 监视表达式显示了函数代码所在的实际地址。

另请参阅: jump stubs in PE files

【讨论】:

以上是关于visualstudio中输入2显示正确的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Visual Studio 在 XAML 中搜索 UserControl?

Visual Studio 2013仅在调试菜单中显示附件

利用VisualStudio将Json转C#实体类,给你2套方案

使用 jQuery 掩码时日期未正确显示

写入存储库后,Visual Studio 未显示正确结果

opencv中vc14和vc15的区别?