Resharper 告诉我使用 auto 和 const
Resharper telling me to use auto with const
在我的程序中,resharper 告诉我每当我初始化一个 const 值时,例如我声明的 int charSize,我应该使用 auto。为什么我应该使用 auto 而不是 int 当我知道我希望它是一个整数而不是任何其他数据类型时,因为我永远不会从 int 类型更改该值。使用自动类型而不是直接类型效率更高吗?
#include <iostream>
int main()
{
const int charSize = 256;
char str[charSize];
scanf_s("%256s", str, charSize);
printf("%s\n", str);
}
没有"auto type"。编写 auto
因为 C++11 支持类型推导,所以对象仍然是 int
但你的编译器会为你计算出来。
在此示例中,这样做没有任何好处;事实上,简单地清楚并编写你想要的类型(IMO)要好得多。如果这不仅仅是错误†,Resharper 试图为您做出决定就超出了范围。
† 可能是 Resharper 混淆了,试图让你使用 auto
存储 class 说明符(在 C++11 中删除),但即使对于 const
对象,这始终是块范围内的默认值。
ReSharper 仅允许将显式类型更改为 auto
,它不希望您或告诉您这样做。请注意,"Use auto" 检查的严重性默认设置为 "Hint",这意味着它不会显示在错误条上,但仍然可以让您选择调用相应的快速修复出于某种原因您想使用 auto
。如果您不想看到此检查,只需通过检查上下文菜单将其严重性设置为 "Do not show"。
在我的程序中,resharper 告诉我每当我初始化一个 const 值时,例如我声明的 int charSize,我应该使用 auto。为什么我应该使用 auto 而不是 int 当我知道我希望它是一个整数而不是任何其他数据类型时,因为我永远不会从 int 类型更改该值。使用自动类型而不是直接类型效率更高吗?
#include <iostream>
int main()
{
const int charSize = 256;
char str[charSize];
scanf_s("%256s", str, charSize);
printf("%s\n", str);
}
没有"auto type"。编写 auto
因为 C++11 支持类型推导,所以对象仍然是 int
但你的编译器会为你计算出来。
在此示例中,这样做没有任何好处;事实上,简单地清楚并编写你想要的类型(IMO)要好得多。如果这不仅仅是错误†,Resharper 试图为您做出决定就超出了范围。
† 可能是 Resharper 混淆了,试图让你使用 auto
存储 class 说明符(在 C++11 中删除),但即使对于 const
对象,这始终是块范围内的默认值。
ReSharper 仅允许将显式类型更改为 auto
,它不希望您或告诉您这样做。请注意,"Use auto" 检查的严重性默认设置为 "Hint",这意味着它不会显示在错误条上,但仍然可以让您选择调用相应的快速修复出于某种原因您想使用 auto
。如果您不想看到此检查,只需通过检查上下文菜单将其严重性设置为 "Do not show"。