getc () vs fgetc () - Jakie są główne różnice?

Wszędzie widzę „jest praktycznie identyczny” lub coś podobnego…

ZSamouczek programowania GNU C :

W bibliotece GNU C jest inna funkcja o nazwie fgetc. Pod wieloma względami jest identyczny z getc, z wyjątkiem tego, że getc jest zwykle implementowany jako funkcja makro i jest wysoce zoptymalizowany, więc jest preferowany w większości sytuacji. (W sytuacjach, gdy czytasz ze standardowego wejścia, getc jest mniej więcej tak samo szybki jak fgetc, ponieważ ludzie piszą powoli w porównaniu z tym, jak szybkie komputery mogą czytać ich dane wejściowe, ale gdy czytasz ze strumienia, który nie jest interaktywnie wytwarzany przez człowieka, fgetc jest prawdopodobnie lepszy.)

Jakie są inne różnice? Słyszałem, że każda z nich ma inną implementację (i jedną można użyć jako makro), ale co sprawia, że ​​są tak różne (lub wystarczająco różne), aby mogły być zarówno w standardowej bibliotece C (lub specyfikacji)?

questionAnswers(3)

yourAnswerToTheQuestion