在未使用的类 *tor 上使用 [[maybe_unused]] 属性

Using [[maybe_unused]] attribute on unused class *tors

本文关键字:maybe unused 属性 未使用 tor      更新时间:2023-10-16

问题

我应该在未使用的类 *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]]看似随意地散布。