2013-04-23 6 views
2

я упомянул два надежных источников для информации и, как представляется, имеют разные определения одного и того же:Есть функции getchar() и putchar() или макросы?

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

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

Первый источник говорит putchar() функция, как getchar(), но во второй ссылке сказано, что putchar() - это макрос. В моей книге говорится, что getchar() - это макрос. Что правильно?

+1

Реализация определена! –

ответ

6

getchar и putchar являются функциями, но могут дополнительно быть определены как макросы. Независимо от того, являются они или нет, зависит от реализации. В стандарте C говорится о стандартных библиотечных функциях (C99, [email protected]):

Любая функция, объявленная в заголовке, может быть дополнительно реализована как функционально подобный макрос, определенный в заголовке.

1

Для получения дополнительной информации, на мой макинтош «человек GetChar» дает следующее:

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). 
+0

Версия для Mac OS 10.8.3 – ElSinus

0

Это полностью зависит, как это реализовано в вашем компиляторе.