c++ - if 语句中的 [[maybe_unused]] 似乎在 GCC 中不起作用
问题描述
关键[[maybe_unused]]
在于它告诉编译器不要警告未使用的变量,对吗?那么为什么 GCC 会ui
在这里警告未使用呢?
#include <iostream>
#include <vector>
#define NDEBUG
#include <cassert>
int main()
{
std::vector<int> numbers = {1,2,3};
if ([[maybe_unused]] auto ui = static_cast<unsigned int>(numbers.size()))
{
assert(ui);
std::cout << "ok" << std::endl;
}
}
难道我做错了什么?这是编译器中的错误吗?
(顺便说一句:在 Wandbox 上尝试这个,ui
无论是否[[maybe_unused]]
存在,Clang 似乎都不会警告未使用)。
(此外:MSVC 也不会警告ui
未使用,即使[[maybe_unused]]
不存在)。
解决方案
对我来说似乎是一个编译器错误。该属性可以应用于任何变量声明,这就是变量声明。
提交91304。
推荐阅读
- java - 如何更改警报对话框中按钮的颜色?
- c# - 使用 powershell 加载 C# DLL,[System.Type]::GetType 返回 null
- node.js - 在节点中解析 ByteBuffer?
- node.js - 谷歌应用引擎作为图像服务器
- html - 如何让我的文本成为带有填充和省略号的两行?
- ios - tableView 不显示我的数据
- php - Wooleet 区块链 API 错误(使用 PHP CURL)
- python - 阻止软件包安装到 conda 基础环境
- spring - Spring Cloud Contract org.junit.ComparisonFailure:预期:<[200]> 但在运行测试时是:<[401]>
- python - 我的完美数字代码