【发布时间】:2020-04-30 07:31:34
【问题描述】:
我正在使用 MS Visual Studio 2017, V. 15.9.8。
我正在使用出色的 JetBrains ReSharper Ultimate 2019.1.2 Build 191.0.20190603.142841。它在指定位置给我一个警告:
#include <vector>
struct T
{
std::vector<char> m;
const char *f() const
{
static const char emptyData; // ReSharper complains here
return m.size() ? &m[0] : &emptyData;
}
};
消息是
file.h: 'const unsigned char' 类型的静态局部变量应该被初始化。这是非标准的 Microsoft C++ 扩展。
如果 emptyData 不是 const,警告就会消失。
警告是错误的,因为所有静态数据,包括常量静态局部变量,都是按照标准零初始化的,对吧?
【问题讨论】:
标签: c++ static initialization constants default-value