我收到 很多 关于开关的警告,这些警告仅部分覆盖了切换的枚举范围。因此,我想为所有这些开关设置一个“默认值”,并在这种情况下放置 __builtin_unreachable
(GCC 内置),以便编译器知道这种情况是不可达的。
但是,我知道 GCC4.3 还不支持该内置函数。有什么好方法可以模拟该功能吗?我考虑过取消引用空指针,但这可能会产生其他不良影响/警告等。你有更好的主意吗?
原文由 Johannes Schaub - litb 发布,翻译遵循 CC BY-SA 4.0 许可协议
我收到 很多 关于开关的警告,这些警告仅部分覆盖了切换的枚举范围。因此,我想为所有这些开关设置一个“默认值”,并在这种情况下放置 __builtin_unreachable
(GCC 内置),以便编译器知道这种情况是不可达的。
但是,我知道 GCC4.3 还不支持该内置函数。有什么好方法可以模拟该功能吗?我考虑过取消引用空指针,但这可能会产生其他不良影响/警告等。你有更好的主意吗?
原文由 Johannes Schaub - litb 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
1 回答3.3k 阅读
您可以调用声明为
_Noreturn
的内联函数,将该调用之后的任何内容标记为无法访问。允许编译器在这样的函数之后抛出任何代码。如果函数本身是static
(并且确实返回),编译器通常也会内联该函数。这是一个例子:请注意,如果标记为
_Noreturn
的函数确实返回,您将调用未定义的行为。确保永远不会调用该函数。