Search code examples
cmacrosgetcharputchar

Are getchar() and putchar() functions or macros?


I referred to two reliable sources for the information and both seems to have different definitions of the same thing:

http://www.cplusplus.com/reference/clibr%E2%80%A6

http://www.ocf.berkeley.edu/~pad/tigcc/doc/html/stdio_fputchar.html

The first source says putchar() is a function, as is getchar(), but in the second link it says putchar() is a macro. My book says getchar() is a macro. Which is correct?


Solution

  • getchar and putchar are functions, but may additionally be defined as macros. Whether they are or not depends on the implementation. The C standard says regarding standard library functions (C99, 7.1.4@1):

    Any function declared in a header may be additionally implemented as a function-like macro defined in the header.