вторник, 17 декабря 2013 г.

getc и fgetc: в чём различие?

В языках C и С++ функции getc и fgetc делают одно и то же: читают из указанного потока очередной символ. Однако в виду того, что getc может быть реализована в виде макроса, мы получаем следующие особенности использования указанных выше функций (см. "Advanced Programming in the UNIX Environment, 3rd Edition", стр. 151):

  1. Аргумент функции getc не может быть выражением с побочным эффектом.
  2. Т. к. fgetc гарантированно является функцией, то мы можем взять её адрес и передать его в качестве параметра другой функции.
  3. Вызов функции fgetc возможно занимает больше времени, чем вызов getc, т. к. обычно вызов функции занимает больше времени, чем вызов макроса.

Комментариев нет: