这两者有什么不同?JetBrains 在这里列出了一些差异,但我听说列表中可能存在一些不准确之处.
c++ resharper visual-studio-addins visual-assist resharper-c++
我试图在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;
我无法理解这意味着什么以及如何解决此警告.
由于这是我经常使用的方案,我有点担心警告.
任何人都可以建议或指出我正确的方向吗?
编辑:将循环更改为:
for (size_t i = 0; i < size; ++i)
arr[i] = 0;
Run Code Online (Sandbox Code Playgroud)
仍然会发出警告.
升级到最新的ReSharper Ultimate版本后,我的VS配色方案有点乱了.我已经尝试重新安装它,VC12_Config从注册表中删除密钥并修改"扩展已更改文件".如果我暂停ReSharper,我的配色方案会切换回默认的深色皮肤(我想要的).
这是它的样子:


来自主要的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
我最近一直在做一个项目,我决定将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)
据我了解,这在功能上等同于生成警告的代码.我真正想知道的是这里是否有一些我应该注意的东西,因为我很困惑为什么一个函数会抱怨而另一个函数却没有.
我想我已经明白了.我已经把问题输出了,所以我要用我发现的内容发布它,以供其他人参考.我没有足够的知识去详细说明,所以如果不满意的话,请随意扩展或更正我的答案:)