aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-09-21 13:36:42 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-11-02 01:33:32 +0100
commitcb2fcfc0a1da3cfac9094abf1d11c23653937395 (patch)
tree5885e3f6073020ba3b07db35ab2aef73b2726374 /include
parent81fd176a6b4958147302ef900f2651c476a3d4e7 (diff)
Add no-return attribute to usage() style functions
A common pattern in command line processing is having a usage() function that prints out how to use the command line options and then terminates. The function is typically used inside a switch block for command line options like `-h' or unknown options. In a lot of places, the break keyword is omitted, because the function exits anyway. However, this triggers gcc warnings about implicit fall-through. Rather than adding a phony "/* fall-through */" this patch flags the usage() style function with a gcc attribute, indicating that they do not return and removes further superfluous break statements. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include')
-rw-r--r--include/common.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/common.h b/include/common.h
index d609257..2ce5d22 100644
--- a/include/common.h
+++ b/include/common.h
@@ -129,6 +129,13 @@ extern "C" {
fprintf(stderr, "%s: warning!: " fmt "\n", PROGRAM_NAME, ##__VA_ARGS__); \
} while(0)
+/* for tagging functions that always exit */
+#if defined(__GNUC__) || defined(__clang__)
+ #define NORETURN __attribute__((noreturn))
+#else
+ #define NORETURN
+#endif
+
/**
* prompt the user for confirmation
*/