查看规格[[maybe_unused]] http://en.cppreference.com/w/cpp/language/attributes, 它指出:
出现在类、typedef、变量、非静态数据成员、函数、枚举或枚举器的声明中。如果编译器对未使用的实体发出警告,则对于声明 Maybe_unused 的任何实体,该警告都会被抑制。
正如这里提到的枚举器,我有点希望它有一个用例。因为我唯一能想到的是-Wswitch
警告,我用 Clang、GCC 和 MSVC 尝试过。
enum A
{
B,
C [[maybe_unused]]
};
void f(A a)
{
switch (a)
{
case B: break;
}
}
所有 3 个编译器都会给出以下警告的变体:
<source>:9:13: warning: enumeration value 'C' not handled in switch [-Wswitch]
switch (a)
^
实时代码 https://godbolt.org/g/kBGjiW
这是使用此属性的有效用例吗?是否还有其他用例可以在此位置添加该属性,或者这只是无用的添加?
该属性的目的是声明一个实体可能永远不会被创建use的,如果是这种情况,那么实现就不会费心警告您,例如,您可能在using一个错误的实体。
switch
陈述是完全不同的事情:不是handling即使枚举器从未出现过,枚举器也是有问题的used在该 TU 中;它表明程序中存在逻辑间隙。如果该函数具有外部链接,并且其他人使用该枚举器调用它怎么办?
简而言之,即使在我们将枚举器标记为可能未使用的 TU 中(这感觉毫无意义,因为在名称空间范围内它们通常是这样),在程序逻辑中覆盖它仍然是非常明智的(并且 Clang 非常正确地为您提供了该建议)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)