If ERR_NOT_OK is defined as -41, then your
ret_value ERR_NOT_OK;
is substituted with
ret_value -41;
which is a valid expression statement, even though it is effectively a no-op. What was originally intended as unary - gets interpreted as binary - in this context.
This is why it is a good idea to define it as
#define ERR_NOT_OK (-41)
3
solved C++ no equal sign but compiles without assigning value