I was really quite surprised when I first attempted to add error checking at work, and my compilation failed with a error: use of undeclared label 'onError'.
From a ubiquitous global header in a (thankfully recently deceased) library within our project:
#define CheckSuccess(condition) do { \
if (!condition) { \
goto onError; \
} \
} while (0) The idea that an error checking macro would require the current function to implement a specifically named label for error cleanup (or, indeed, that there would be significant error cleanup not handled by RAII), is a little unpleasant to me...
I should probably add that the author of this particular gem thought that they were working around the lack of exception handling on our target platform.