- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在下面的代码中,我使用标准 [[fallthrough]]
来自 C++1z 的属性以记录需要失败:
#include <iostream>
int main() {
switch (0) {
case 0:
std::cout << "a\n";
[[fallthrough]]
case 1:
std::cout << "b\n";
break;
}
}
使用 GCC 7.1,代码编译时不会出错。但是,编译器仍然会警告我失败:
warning: this statement may fall through [-Wimplicit-fallthrough=]
std::cout << "a\n";
~~~~~~~~~~^~~~~~~~
为什么?
最佳答案
属性后面少了一个分号:
case 0:
std::cout << "a\n";
[[fallthrough]];
// ^
case 1:
[[fallthrough]]
属性将应用于空语句(参见 P0188R1 )。当前 Clang 主干 gives a helpful error in this case :
error: fallthrough attribute is only allowed on empty statements
[[fallthrough]]
^
note: did you forget ';'?
[[fallthrough]]
^
;
更新:科迪·格雷 reported这个问题交给 GCC 团队。
关于c++ - 为什么即使我使用 [[fallthrough]],GCC 也会警告我失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45026747/
我正在寻找 Bash 中带有 fallthrough cases 的 switch 语句的正确语法(最好不区分大小写)。在 PHP 中,我会像这样编程: switch($c) { case 1
我正在尝试在 visual studio 2017 中使用 c++17 [[fallthrough]] 属性: Qt::ItemFlags flags = Qt::ItemIsSelectable;
我有 2 个文本元素,当鼠标悬停在它们中间时,我需要触发两个鼠标悬停事件。这是我的代码: div { position: absolute; } .div1 { display: block;
我希望 clang 捕捉到我无意中的“switch”语句失败。这个 shell 脚本证明了我的失败;我在脚本本身之后显示输出。我做错了什么? #!/bin/sh cat 1.c #include
有谁知道 Java 中字体字形掉落的现有解决方案?例如,我们的设计师已经确定 Calibri 是最符合我们需求的字体,但是如果我指定 Calibri,它自然无法渲染在该字体中没有匹配字形的字符。在这种
-layout: post title: Swift 3 fallthrough 语句 date: 2017-08-19 23:42:39 updated: 2017-08-19 23:42:39 p
在C#中我们可以写 switch(num) { case 0: case 1: // do something; break; case 2: ............ .....
考虑以下场景: (以下内容已被省略:构造函数、Getters 和 Setters、@Column 注释、@Basic 注释、@Table 注释、导入和包声明。其余部分完全按照我的意图(甚至是空注释))
过去几天我一直在学习 c(还是初学者),我看到了一些代码,例如: int func() { code.. return 0; error: return 1; } 我试图弄清楚
做什么 this statement may fall through [-Werror=implicit-fallthrough=] 是什么意思? 我在这样的语句中编译时遇到这个错误: switch
在我正在开发的产品中发现了几个讨厌的错误,所有这些错误都与 switch 语句中的无意“失败”有关。 现在,我想更进一步 - 我想检测大量 C 代码中的 switch 语句失败。 我只能使用 Linu
在下面的代码中,我使用标准 [[fallthrough]]来自 C++1z 的属性以记录需要失败: #include int main() { switch (0) { ca
我正在使用 QtTest 并且刚刚更新到 Qt 5.9 并且有这种警告: error: use of the 'fallthrough' attribute is a C++1z extension
在下面比较元组的 switch 语句中,我希望它打印“点在 x 轴上”和“在测试范围内”,但它会打印第一个匹配案例之后的所有内容。可能我理解错了,但是我认为在 Swift 中,fall through
代码示例: int main(int argc, char **argv) { switch(argc) { case 0: argc = 5;
我有一个在 gcc 4.8.4 下构建良好的项目。我尝试使用 gcc 7 进行构建,并注意到很多 -Wimplicit-fallthrough= 警告。 As far as I'm aware ,这确
这可能吗? switch type { case let .dog(say): fallthrough case let .cat(say):
我在 GCC 编译器版本 7.1.0 上测试 C++17 功能。这与 fallthrough 属性有关,以下示例 (live example ) 改编自在线 CPP 引用 here #include
我们正在捕获来自 GCC 7 的警告,即在 switch 语句中隐式失败。以前,我们在 Clang 下清除了它们(这就是下面评论的原因): g++ -DNDEBUG -g2 -O3 -std=c++1
Scala 的编写方式如下: int i; switch(i) { case 1: a(); break; case 2: case 15:
我是一名优秀的程序员,十分优秀!