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"。