小编Ben*_*Ben的帖子

Visual Studio 2015 Natvis如何显示函数静态变量?

我正在使用Microsoft Visual Studio 2015中的.natvis文件编写调试器可视化工具.如果可能的话,我想在课程中提供一条信息.我想知道获取该变量的语法是什么.

这是C++代码的简化版本:

class MyClass
{
public:

    MyClass() {}

    int getAValue(size_t index)
    {
        static std::vector<int> numberVector;

        if (numberVector.size() <= index)
        {
            addSomeNumbersToTheEnd(numberVector);
        }

        return numberVector[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

在调试器中,当我将鼠标悬停在MyClass的实例上时,我希望看到向量的大小,但我不知道如何引用它(或者如果可能的话).这是可视化器类型,<what goes here?>在我遇到麻烦的地方:

<Type Name="MyClass">
    <DisplayString>[$(Type)] staticVectorSize={<what goes here?>}</DisplayString>
</Type>
Run Code Online (Sandbox Code Playgroud)

实际问题要复杂得多,包括奇怪的重复模板模式以创建更好的枚举对象,所以请不要评论这个有点人为的场景的无用性.

c++ static visual-studio natvis visual-studio-2015

6
推荐指数
1
解决办法
686
查看次数

Visual Studio 2010 中的解决方案资源管理器筛选器

我正在寻找有关新的 Visual Studio 2010 .vcxproj.filters 文件的语法信息。有没有一种方法可以不仅仅基于扩展名进行通配符过滤?

这是场景:

我们有一个工具可以为 Visual Studio 2005 编写一个项目文件,定义应用程序中的所有消息以及关联的生成类。在项目文件中,我们不仅按 h/cpp 对 C++ 文件进行分组,还按用户定义的过滤器对 C++ 文件进行分组,因此我们的项目可能如下所示:

  • 消息      ( <-- that's the .vcproj file)
    • GENERATED_MSGS
      • 通讯
        • H
          • COMRequest.h
          • COMRequestAck.h
        • 程序文件
          • COMRequest.cpp
          • COMRequestAck.cpp
      • 数据
        • H
          • 数据请求.h
          • 数据请求确认.h
        • 程序文件
          • 数据请求.cpp
          • 数据请求确认.cpp
      • 命令
        • H
        • 程序文件
    • 头文件
      • 手工制作的消息1.h
      • 手工制作的消息2.h
    • 源文件
      • 手工制作的消息1.cpp
      • 手工制作的消息2.cpp
    • MyFileThatDefinesTheMessages.xml

过滤器(COM、DATA、ORDER 等)存储在 .vcproj 文件中:

...
<Files>
    <Filter Name="GENERATED_MSGS">
        <Filter Name="COM">
            <Filter Name="COM">
                <Filter Name="h">
                    <File RelativePath=".\COMRequest.h"/>
...
Run Code Online (Sandbox Code Playgroud)

在 Visual Studio 2010 中,为项目定义的文件位于 .vcxproj 文件中,但如何显示它们的筛选器存储在 .vcxproj.filters 文件中。由于我们的过滤器始终由类名的第一部分确定,因此我希望只使用消息生成工具创建 .vcxproj 文件并修改 .filters 文件以使用通配符将文件放入正确的过滤器中。例如,一个名为 …

projects-and-solutions filter visual-studio-2010

5
推荐指数
0
解决办法
5166
查看次数

在 Visual Studio C++ 中弃用单个构造函数的正确语法是什么?

我在代码中使用新的 [[deprecated("message")]] 属性。我有一个类,它有两个构造函数,其中一个应该标记为已弃用(显然已简化,并且可能存在语法错误):

class MyClass
{
public:
    // good constructor
    MyClass(int someNumber): _someNumber(someNumber) {}

    [[deprecated("Use MyClass(int) instead")]]
    MyClass(const char* someStr): _someNumber(atoi(someStr)) {}

private:
    int _someNumber;
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 抱怨“属性‘已弃用(“使用 MyClass(int) 代替”)’不能在此上下文中应用。

有没有办法在 Visual Studio 2015 中弃用构造函数,以便在任何地方使用它时我都会收到警告?

c++ deprecated c++14 visual-studio-2015

4
推荐指数
1
解决办法
444
查看次数