标签: resharper-c++

ReSharper C++和Visual Assist有何不同

这两者有什么不同?JetBrains 在这里列出了一些差异,但我听说列表中可能存在一些不准确之处.

c++ resharper visual-studio-addins visual-assist resharper-c++

12
推荐指数
3
解决办法
9507
查看次数

当索引不是整数常量表达式时,不要使用数组下标; 使用gsl :: at()代替

我试图在Microsoft Visual Studio中创建一些示例代码

int main()
{
    const size_t size = 10;
    int arr[size];

    for (size_t i = 0; i < size; ++i)
        arr[i] = i;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在JetBrains ResharperC++发出以下警告 arr[i] = i;

在此输入图像描述 当索引不是整数常量表达式时,不要使用数组下标; 使用gsl :: at()代替

我无法理解这意味着什么以及如何解决此警告.

由于这是我经常使用的方案,我有点担心警告.

任何人都可以建议或指出我正确的方向吗?

编辑:将循环更改为:

for (size_t i = 0; i < size; ++i)
    arr[i] = 0;
Run Code Online (Sandbox Code Playgroud)

仍然会发出警告.

c++ resharper-c++ cpp-core-guidelines

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

在ReSharper C++中搞砸了配色方案

升级到最新的ReSharper Ultimate版本后,我的VS配色方案有点乱了.我已经尝试重新安装它,VC12_Config从注册表中删除密钥并修改"扩展已更改文件".如果我暂停ReSharper,我的配色方案会切换回默认的深色皮肤(我想要的).

这是它的样子:

ReSharper上

重塑

ReSharper关闭

重塑整形

c++ resharper colors visual-studio-2013 resharper-c++

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

Visual Studio 2017中的Intellisense可以建议包含C++标头吗?

来自主要的C#背景,我使用ReSharper多年.能够将光标放在未解析的引用上,按Alt + Enter,并选择一个选项来添加相应的using语句是非常宝贵的.现在,Visual Studio 2017本身具有此功能!有了这个(以及VS2017中添加的许多其他功能),我摆脱了ReSharper并享受着非常快速且响应迅速的Visual Studio体验.

我最近开始用C++做一些工作,虽然我从Intellisense得到有关字段和方法的建议,但是当涉及到未解析的引用时,它并没有建议任何标题#include.

我的问题是Visual Studio 2017是否添加了该功能来建议#includeC++的选项?在浏览之后,似乎Visual Assist X和ReSharper C++都有这个功能,但我找不到任何详细说明此功能现在是否可用(如果是,我如何启用它?)或者它是否仍然是一个扩展专属.

c++ intellisense visual-assist resharper-c++ visual-studio-2017

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

将r值绑定到l值引用是非标准的Microsoft C++扩展

我最近一直在做一个项目,我决定将ReSharper C++安装到Visual Studio.当它分析我的代码时,它会吐出一堆新的警告(显然我的编码习惯很糟糕......).其中一个花了我一段时间才弄明白的是Binding r-value to l-value reference is non-standard Microsoft C++ extension.我用以下代码重新创建了警告:

Type foo(Type t1, Type t2) {
    return Type(t1.value & t2.value);
}
Run Code Online (Sandbox Code Playgroud)

表达式t1.value & t2.value触发警告.我理解警告的第二部分,这意味着我的代码只是由于Microsoft扩展而编译,而其他编译器会拒绝编译它.我正在使用一个重载的运算符,它返回一个对象(称为Datum),Type它作为构造函数参数,作为引用(Type::Type(Datum& dat)).

随着一些游戏,我设法通过重构代码使警告消失:

Type bar(Type t1, Type t2) {
    Datum datum = t1.value & t2.value;
    return Type(datum);
}
Run Code Online (Sandbox Code Playgroud)

据我了解,这在功能上等同于生成警告的代码.我真正想知道的是这里是否有一些我应该注意的东西,因为我很困惑为什么一个函数会抱怨而另一个函数却没有.

我想我已经明白了.我已经把问题输出了,所以我要用我发现的内容发布它,以供其他人参考.我没有足够的知识去详细说明,所以如果不满意的话,请随意扩展或更正我的答案:)

c++ resharper rvalue lvalue resharper-c++

3
推荐指数
2
解决办法
2450
查看次数