gpt4 book ai didi

c++ - 编译器是否应该忽略导致运行构造函数或析构函数的未使用变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:25 26 4
gpt4 key购买 nike

我有一些代码放在析构函数中以确保它在正常退出和异常堆栈展开时运行:

struct withProtectedClose {

~withProtectedClose() {
// Do some cleanup here...
}
};

void test() {
withProtectedClose close;

// Do some work before closing
}

然而 g++ 编译器 (g++ (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11)) 正在提示:

test.cpp: In function `void test()':
test.cpp:28: warning: unused variable 'close'

我可以通过以某种方式引用变量来使它静音,但这会使代码变得困惑只是为了让编译器静音,而不是我希望我的代码受到影响的方式。

是否存在析构函数这一事实足以让编译器知道构造后没有使用变量没有区别?

假设编译器在仍然收到合法未使用变量的通知的同时无法关闭,是否有其他方法可以仅通过使用它来使它静音?

最佳答案

我倾向于认为这是编译器中的错误。它仍然存在于 g++ 4.7.1 中。

作为解决方法,您可以尝试定义一个什么都不做的构造函数。它抑制了 g++ 4.7.1 的警告,我不知道 3.4.6。

关于c++ - 编译器是否应该忽略导致运行构造函数或析构函数的未使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326554/

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