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?

有帮助吗?

解决方案

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.

其他提示

For information, on my mac 'man getchar' gives this:

 The fgetc() function obtains the next input character (if present) from the stream pointed at by stream, or the
 next character pushed back on the stream via ungetc(3).

 The getc() function acts essentially identically to fgetc(), but is a macro that expands in-line.

 The getchar() function is equivalent to getc(stdin).

It's entirely dependent how it's implemented in your compiler.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top