我正在使用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)
实际问题要复杂得多,包括奇怪的重复模板模式以创建更好的枚举对象,所以请不要评论这个有点人为的场景的无用性.
我正在寻找有关新的 Visual Studio 2010 .vcxproj.filters 文件的语法信息。有没有一种方法可以不仅仅基于扩展名进行通配符过滤?
这是场景:
我们有一个工具可以为 Visual Studio 2005 编写一个项目文件,定义应用程序中的所有消息以及关联的生成类。在项目文件中,我们不仅按 h/cpp 对 C++ 文件进行分组,还按用户定义的过滤器对 C++ 文件进行分组,因此我们的项目可能如下所示:
( <-- that's the .vcproj file)
过滤器(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 文件以使用通配符将文件放入正确的过滤器中。例如,一个名为 …
我在代码中使用新的 [[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 中弃用构造函数,以便在任何地方使用它时我都会收到警告?