gpt4 book ai didi

c++ - std::ignore 用于忽略未使用的变量

转载 作者:IT老高 更新时间:2023-10-28 12:35:04 26 4
gpt4 key购买 nike

使用 std::ignore 忽略未使用的变量是一种好方法吗?

假设我有这样的功能:

void func(int i)
{
//for some reason, I don't need i anymore but I cannot change signature of function
std::ignore = i;
}

其他信息

这是一个例子,一些答案建议使用匿名变量。但是对于其他情况,我该怎么做,例如:

int Thread_UnSafe_func_returnSomething():
void func()
{
// To make it thread safe
// Also it is required to call only once
static int i = Thread_UnSafe_func_returnSomething();

std::ignore = i;
}

最佳答案

std::ignore 可能有效,但它旨在用于元组。因此,您需要包含元组 header 以及谁知道为分配完成了哪些操作。这也可能在另一个 c++ 版本中中断,因为它从未被记录为以这种方式使用。

一个更好的方法是 C++17 属性 [[maybe_unused]]

void func([[maybe_unused]] int i)
{
}

它将声明放在变量声明中,因此您不必在额外的行/语句中声明它。

同样可以用于局部(和局部静态)变量

...
[[maybe_unused]] static int a = something();
...

还有更多:

Appears in the declaration of a class, a typedef­, a variable, a non­static data member, a function, an enumeration, or an enumerator. If the compiler issues warnings on unused entities, that warning is suppressed for any entity declared maybe_unused.

http://en.cppreference.com/w/cpp/language/attributes

至于有关人员声明变量未使用后仍然可以使用:

是的,这是可能的,但是(至少在 clang 中)如果您使用 maybe_unused 声明的变量,您会收到警告。

关于c++ - std::ignore 用于忽略未使用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39745817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com