小编Cod*_*Dan的帖子

VS2012:重新运行先前失败的测试时,在测试资源管理器中清除测试结果

在VS2012中运行单个测试时,测试资源管理器底部会显示一个窗口,其中包含(假设失败)旁边有"Test Failed"的红色图标.接下来是"经过时间"的失败消息.

我想知道是否有办法清除这个窗口.例如,如果我右键单击我的测试并选择"Debug Selected Tests",那么当我逐步完成测试时,这个测试结果窗口仍会显示过去测试运行的失败,这有点令人困惑.

unit-testing visual-studio-2012 test-explorer

28
推荐指数
3
解决办法
4903
查看次数

减少Visual Studio 2015中的左边距

请问任何人都可以告诉我如何摆脱VS2015编辑器左边缘的边距?

我不介意"指标边距",但现在我和代码的开头之间有一个很大的空间.在工具选项 - 文本编辑器 - 常规 - 显示中,我关闭了"选择边距".打开它会使差距更大.

我相信额外的保证金是由新的"代码辅助"灯泡使用的,我很乐意关闭它,但我找不到它的选择.

我安装了Productivity Power Tools扩展,但我不认为这是负责任的.

我发现这里有一个答案:如何在Visual Studio 2015中禁用灯泡? 但这涉及修改项目文件,这将影响整个团队,他们不希望我将其关闭.我感兴趣的是,关闭是否关闭所有代码分析会修复扩大的边距,所以我尝试禁用所有规则.可悲的是,这对左手边缘没有任何影响!

text-editor margins visual-studio-2015

17
推荐指数
2
解决办法
3615
查看次数

测试无效的Windows句柄:我应该与'NULL','0'甚至'nullptr'进行比较?

我来自一个背景,指针通常应该与'NULL'和'0'的整数进行比较.

由于我没有将Windows句柄视为纯粹意义上的"指针"(即"句柄"),所以我习惯将它们与0比较而不是"NULL".

显然,它们现在已经在内部实现为指针,但我个人认为这仅仅是为了获得一些类型安全而不是因为它们本质上是指针.

无论如何,我只是注意到返回HDC的CreateIC的帮助声明如果函数失败则返回'NULL'.

现在我很困惑 - 我想知道其他人的估计 - 将Windows句柄视为一个指针(并因此针对现代编译器对'NULL'或'nullptr'进行检查)是否更正确或应该考虑到是一个整数?

c++ windows null handles

13
推荐指数
1
解决办法
9032
查看次数

是否存在与堆内存分配相关的内存开销(例如堆中的标记)?

使用最近的Visual Studio C++编译器在Windows上特别考虑C++,我想知道实现:

假设我正在使用发布编译器,并且我不关心内存碎片/打包问题,是否存在与在堆上分配内存相关的内存开销?如果是这样,大概每个分配的字节数可能是多少?它会比64-bit代码更大32-bit吗?

我对现代实现并不是很了解,但我想知道每次分配是否有写入堆的标记,或者是否维护某种表(如文件分配表).

在一个相关点(因为我主要考虑标准库功能,如'map'),Microsoft标准库实现是否曾使用自己的分配器(对于像树节点这样的东西)来优化使用?

c++ windows heap memory-management visual-studio

8
推荐指数
1
解决办法
3589
查看次数

显示亚洲字符(使用Unicode):在RichEdit控件中显示时与使用ExtTextOut相比,字符间距有所不同

这张照片说明了我的困境:

图片1

所有字符看起来都一样大小,但是在RichEdit控件中显示时,与我使用ExtTextOut时相比,它们之间的间距是不同的。

我想呈现与RichEdit控件中相同的字符(理想情况下),以保留换行位置。

谁能告诉我:

a)哪个更正确的表示形式?

b)为什么RichEdit控件显示的文本在亚洲字符之间没有空格?

c)有什么方法可以使ExtTextOut在绘制这些字符时重现RichEdit控件的行为?

d)如果我正在使用亚洲版本的Windows,这会有什么不同吗?

也许我很乐观,但是如果有人可以提供任何提示,我将非常感兴趣。

如果有帮助:

这是我的文字:

???????????1 2 3 4 5 6 7 8 9 0
Run Code Online (Sandbox Code Playgroud)

向亚洲读者表示歉意,这只是为了测试我们的Unicode实现,我什至不知道字符取自哪种语言,更不用说它们是否意味着任何意义了

为了通过将这些字符粘贴到RichEdit控件(例如,写字板)中来查看效果,您可能会发现必须滑动它们并将字体设置为“ Arial”。

我获得的富文本为:

{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang2057 {\ fonttbl {\ f0 \ fnil \ fcharset0 Arial;}} {\ colortbl; \ red0 \ green0 \ blue0;} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ lang9 \ fs22 \ u24555?\ u30340?\ u26837?\ u33394?\ u29392?\ u29432?\ u36339?\ …

windows unicode rtf richedit textout

5
推荐指数
1
解决办法
995
查看次数

将r值作为非const引用传递(VS警告C4239)

我想做的事情(使用C++ lambda)是有效的:

std::vector<MyType> GetTheArray () {return something;}

const auto DoSomething = [](std::vector<MyType> & array)
{
     //Some processing that involves either sorting the 'array' or setting temporary flags on the items
};

DoSomething (GetTheArray ());
Run Code Online (Sandbox Code Playgroud)

这在标准C++中似乎是不允许的,因为rvalue不能作为非const引用传递.

我的问题:

1)有没有办法使用类型转换来执行此操作或我是否有义务创建一个临时变量来存储GetTheArray()的结果?

2)C++中不允许这样做是否有充分的理由?

请注意,'GetTheArray'返回的'something'是一个即时构建的数组,而不是存储值.

c++ rvalue rvalue-reference c++11

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

在lambda上使用条件运算符调用std :: any_of会产生意外结果

这是我最近在VS2012中编写的一些代码:

    ///<summary>Lambda: Returns true if the field is significant within a baseline context</summary>
    const auto IsSignificantBaselineField = [](const field_info & field)->bool
    {
        //Some lines removed here!
        return something;
    };

    ///<summary>Lambda: Returns true if the field is significant within a project context</summary>
    const auto IsSignificantProjectField = [&IsSignificantBaselineField](const field_info & field)->bool
    {
        if (!IsSignificantBaselineField (field))
            return false;

        //Some lines removed here!
        return something_else;
    };

    return std::any_of (modified_fields.begin (), modified_fields.end (), (proj_id == 0) ? IsSignificantProjectField : IsSignificantBaselineField);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当'proj_id = 90000'时,std :: any_of正在调用IsSignificantProjectField,而我的意图是在这种情况下将调用IsSignificantBaselineField. …

c++ lambda conditional-operator c++-standard-library c++11

3
推荐指数
1
解决办法
1024
查看次数

为什么预先声明std :: basic_string <T>会破坏boost :: regex?

使用Microsoft Visual Studio 2012编译器,使用boost 1.53,我有一些使用的工作代码:

#include <boost/regex.hpp>
Run Code Online (Sandbox Code Playgroud)

后来我将以下两行添加到regex.hpp之前包含的头文件中:

namespace std {template<class T> class basic_string<T>;}
typedef std::basic_string<TCHAR> tstring;
Run Code Online (Sandbox Code Playgroud)

现在我得到了一堆编译错误,但如果在这些其他行之前包含regex.hpp,则没有错误.

许多错误的前几个是:

c:\program files (x86)\boost\boost_1_53\boost\regex\v4\instances.hpp(106): error C2027: use of undefined type 'std::basic_string<_Elem,_Traits,_Alloc>'
19>          with
19>          [
19>              _Elem=char16_t,
19>              _Traits=std::char_traits<unsigned short>,
19>              _Alloc=std::allocator<char16_t>
19>          ]
19>c:\program files (x86)\boost\boost_1_53\boost\regex\v4\instances.hpp(106): error C2065: 'const_iterator' : undeclared identifier
19>c:\program files (x86)\boost\boost_1_53\boost\regex\v4\instances.hpp(106): error C2923: 'boost::match_results' : 'const_iterator' is not a valid template type argument for parameter 'BidiIterator'
19>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364): error C2825: '_Iter': must be …
Run Code Online (Sandbox Code Playgroud)

c++ regex boost compiler-errors stdstring

0
推荐指数
1
解决办法
928
查看次数