Мой опыт работы на C в основном из второго издания The C Programming language, который является очень старой книгой. Что изменилось в C с момента его выпуска, какие устаревшие или устаревшие функции следует избегать?Что изменилось с тех пор, как «Язык программирования C»
ответ
Вы также можете ознакомиться с спецификациями 'C', которые появились после (например, C99). Эти спецификации будут указывать, что они добавили/удалили/изменили по отношению к предыдущему стандарту.
http://en.wikipedia.org/wiki/C_%28programming_language%29
http://en.wikipedia.org/wiki/C99
http://en.wikipedia.org/wiki/C89_%28C_version%29
Если вы хотите увидеть, что имеет место для 'C' будущее, посмотрим на C1x, которая является стандартной наступающего 'C'.
+1 Это хорошие направления. – karlphillip
Если вы можете получить копию стандарта ISO C99, предисловие содержит хороший список 2-страничный основных изменений с C90.
Существует проект C99, доступный в Интернете в формате PDF. Google «C99 pdf», и это должен быть первый результат. –
Не сильно изменилось. Для большинства практических целей язык, описанный в K & R2, по-прежнему используется. В 1999 году появился новый стандарт C, но он не был принят столь же успешно и широко, как вариант стандарта 1989 года (который также описывает K & R2).
Наиболее важные изменения в C99, которые могли бы разорвать существующие программы являются:
- неявное предположение о типе
int
в объявлениях была удалена. Просто убедитесь, что вы всегда четко указываете типы своих функций и переменных. - Вызов функции без предварительного объявления устарел. Просто убедитесь, что вы объявляете все функции перед использованием, предпочтительно с прототипом.
Оба они были задерживаемыми от достандартных дней и считались плохой практикой в течение длительного времени.
Единственная функция, которая следует избегать (и всегда была) gets()
.
Почему это помечено знаком «kr-c»? Книга K & R2 рассматривает ANSI C, а не K & R C. – schot
Аналогичный вопрос: http://stackoverflow.com/questions/2892951/list-of-deprecated-c-functions. Там есть хорошие ответы. Посмотрите на первый комментарий * KennyTM *. – karlphillip