TL;DR - check out elfs-clang-plugins, cool plugins for clang made at elastifile.
Have you ever made the mistake of returning a bool instead of an enum?
enum Result do_something(void) {
...
return true;
}
In C that’s valid (in C++ you can use ‘class enum’ to avoid it, but if you didn’t you’d have the same problem).
No compiler that I know of warns about this C code. One of our newly-open-sourced clang plugins, flags this (and many other) enum-related mistakes:
clang -Xclang -load -Xclang ./clang_plugins.so \
-Xclang -add-plugin -Xclang enums_conversion \
-c /tmp/test.c
/tmp/test.c:7:12: error: enum conversion to or from enum Result
return true;
^
1 error generated.
The package includes:
More information at https://github.com/sinelaw/elfs-clang-plugins
Because C is… not so safe.