I am having trouble understanding how these macros I see in header files work. I looked back into my texts and understand basic macro operations but I do not understand this.
I understand line 8: replace NORETURN with __attribute__ ((__noreturn__)).
But line 10 just defines the word.
Then what is the point of NORETURN at the end of a function argument list?
This is an excerpt from Linux Programming Interface by Michael Kerrisk
page 52. Header file is error_functions.h
Code:
#ifndef ERROR_FUNCTIONS_H
#define ERROR_FUNCTIONS_H
void errMsg(const char *format, ...);
#ifdef __GNUC__
#define NORETURN __attribute__ ((__noreturn__))
#else
#define NORETURN
#endif
void errExit(const char *format, ...) NORETURN;
void errExit(const char *format, ...) NORETURN;
void err_exit(const char *format, ...) NORETURN;
....
void fatal(const char *format, ...) NORETURN;
...........