- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
使用 [[maybe_unused]]
有什么好处?考虑
int winmain(int instance, int /*prevInstance*/, const char */*cmdline*/, int show);
int winmain(int instance, [[maybe_unused]] int prevInstance, [[maybe_unused]] const char *cmdline, int show);
有些人可能坚持认为使用注释是丑陋的,因为这个关键字是在这种情况下制作并打算使用的,我完全同意,但是 maybe_unused
关键字似乎有点太长了我,使代码更难阅读。
我想尽可能“严格”地遵循标准,但值得使用吗?
最佳答案
如果参数肯定没有使用,[[maybe_unused]]
并不是特别有用,未命名的参数和注释就可以了。
[[maybe_unused]]
主要用于可能未使用的东西,例如
void fun(int i, int j) {
assert(i < j);
// j not used here anymore
}
这不能用未命名的参数来处理,但是如果定义了NDEBUG
,会产生一个警告,因为j
是未使用的。
当参数仅用于(可能禁用)日志记录时,可能会发生类似情况。
关于c++ - 我应该什么时候使用 [[maybe_unused]]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49320810/
尝试使用 gcc 8.2.1 和 clang 6.0.1 编译 sqlpp17 代码库是一种非常奇怪的体验。该代码将编译器推到了极限,同时我可能遇到了一些编译器错误。 从 GCC 文档中,[[mayb
查看 [[maybe_unused]] 的规范,它指出: Appears in the declaration of a class, a typedef, a variable, a nonst
标准草案在 10.6.6 第 2 项中声明了 [[maybe_unused]] “该属性可以应用于类、typedef-name、变量、非静态数据成员、函数、枚举或枚举器的声明。” 有什么理由排除静态数
使用 [[maybe_unused]] 有什么好处?考虑 int winmain(int instance, int /*prevInstance*/, const char */*cmdline*/
我想知道为什么我不能在 lambda 的捕获列表中使用 [[maybe_unused]] 属性。是否有原因不能将捕获的列表的变量标记为 [[maybe_unused]]?这将避免捕获所有变量,意思是
如果一个变量仅在 assert 中使用,那么编译器通常会在程序以 Release模式(即没有调试标志)编译时产生警告。 This question建议禁用这些特定警告的方法。在答案中,建议使用 C++
尝试找出 [[maybe_unused]] 属性的正确语法导致了 following code : int main() { typedef int X; // warning [[m
具有模式匹配(有时?)的函数式语言有可能忽略某些绑定(bind)值,但对于 C++17 结构化绑定(bind),似乎无法做到这一点(std::ignore with structured bindin
带有模式匹配的函数式语言(有时?)可能会忽略一些绑定(bind)值,但使用 C++17 结构化绑定(bind)似乎没有办法做到这一点( std::ignore with structured bind
问题 我应该使用 [[maybe_unused]] attribute在未使用的类 *tors 上? 示例 让我们考虑以下示例: public: struct keyData{ public:
[[maybe_unused]] 的重点是告诉编译器不要警告未使用的变量,对吧?那么,为什么 GCC 在这里警告 ui 未使用? #include #include #define NDEBUG
在下面example : struct Foo { [[maybe_unused]] int member = 1; void bar() { [[maybe_unus
我是一名优秀的程序员,十分优秀!