在未使用的类 *tor 上使用 [[maybe_unused]] 属性
Using [[maybe_unused]] attribute on unused class *tors
问题
我应该在未使用的类 *tor 上使用[[maybe_unused]]
属性吗?
例
让我们考虑以下示例:
public: struct keyData{
public: [[maybe_unused]] keyData(){};
public: keyData(::std::chrono::steady_clock::time_point timestamp)
: lastMod(timestamp)
{};
protected: ::std::chrono::steady_clock::time_point lastMod = ::std::chrono::steady_clock::now();
};
我想使用缓存的time_point
时间戳初始化多个keyData
。但是,我也提供了无参数构造函数,它初始化keyData
,将lastMod
设置为now()
,因为没有提供时间戳。
我应该用[[maybe_unused]]
参数标记未使用的public: keyData(){};
,如示例代码中一样,还是不
?
研究
[[maybe_unused]]
标准属性网站的描述说(粗体是我的):
显示在类、typedef、变量、非静态数据成员、函数、枚举或枚举器的声明中。如果编译器对未使用的实体发出警告,则会禁止对声明为maybe_unused的任何实体发出警告。
构造函数和成员初始值设定项 列表 网站说(粗体是我的):
构造函数是类的特殊非静态成员函数,用于初始化其类类型的对象。
析 构 函数 网站说(粗体是我的):
析构函数是在对象的生存期结束时调用的特殊成员函数。
运算符重载 网站说(粗体是我的):
重载运算符是具有特殊函数名称的函数。
所以如果我理解得很好,*tors 是函数,作为函数,它们可以标记为[[maybe_unused]]
,不是吗?
我应该在未使用的类 *tors 上使用 [[maybe_unused]] 属性吗?
[[maybe_unused]]
的目的是防止向编译器发出警告,这些警告可能会警告限定项未使用。编译器是否警告未使用的构造函数?如果是这样,则应使用它来禁止显示该警告。
但是由于大多数编译器不会警告废弃的函数,因此最好不要打扰。该属性只会占用空间。
除非您宣传您的库-Wunused-member-function
干净,否则所有相关人员最好不要禁止显示此警告。毕竟,想要使用该警告的用户实际上希望警告存在。不使用警告的用户不需要[[maybe_unused]]
看似随意地散布。
- 叮当声:折叠表情和"expression result unused"警告
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- Clang 对使用的类型别名发出"unused type alias"警告
- 标准::可选与 "unused/default"值
- 禁用作用域防护的"Unused variable"
- C++ 中的错误"expression result is unused"
- 叮叮当当 警告:"warning: unknown warning option '-Wno-maybe-uninitialized'"
- 禁用特定函数名称的"unused function"
- CC1加:"-Wno-unused-result"错误
- GCC:变量属性"__unused__"与仅"unused"
- 具有链依赖项的简单生成文件。 "linker input file unused because linking not done" 和 g++ -c
- Xcode 系统使用C++清除并"expression result unused"错误
- 我如何才能最好地将' __attribute__ ((unused)) '应用于这些自动生成的对象
- gcc中的C++11样式[[unused]]属性
- '(maybe you meant to use ‘->’ ?)' 在 gmock 测试中
- C++:如何从已知"point"开始找出"unused"类
- 在代码中抑制"unused parameter"警告
- 从C++中删除"unused variable"警告
- "unused"对象可以优化吗?
- 'goto label'跳过了'unused'的初始化 - 为什么我为 std::string 获取它而不是 int?