docs: use abort() for unreachable default: case in C

Problem: The style guide currently recommends having a `default:` case for switch statements that are not conditional on an enumerated value. Additionally, it recommends using `assert(false)` if `default:` is unreachable. This is problematic because `assert()` only runs on debug builds, which may lead to confusing breakages in release builds. Moreover, this suggestion is followed nowhere in the C code and `abort()` is used everywhere instead.

Solution: Suggest using `abort()` instead of `assert(false)`, that way the program always terminates if a logically unreachable case is reached.
This commit is contained in:
Famiu Haque
2023-10-07 20:34:33 +06:00
parent 1f864139b2
commit 380870335f

View File

@@ -846,7 +846,7 @@ Annotate non-trivial fall-through between cases.
If not conditional on an enumerated value, switch statements should always If not conditional on an enumerated value, switch statements should always
have a `default` case (in the case of an enumerated value, the compiler will have a `default` case (in the case of an enumerated value, the compiler will
warn you if any values are not handled). If the default case should never warn you if any values are not handled). If the default case should never
execute, simply `assert`: >c execute, simply use `abort()`: >c
switch (var) { switch (var) {
case 0: case 0:
@@ -856,7 +856,7 @@ execute, simply `assert`: >c
... ...
break; break;
default: default:
assert(false); abort();
} }
Return Values ~ Return Values ~