2010-08-25 2 views
1

Мой опыт работы на C в основном из второго издания The C Programming language, который является очень старой книгой. Что изменилось в C с момента его выпуска, какие устаревшие или устаревшие функции следует избегать?Что изменилось с тех пор, как «Язык программирования C»

+0

Почему это помечено знаком «kr-c»? Книга K & R2 рассматривает ANSI C, а не K & R C. – schot

+0

Аналогичный вопрос: http://stackoverflow.com/questions/2892951/list-of-deprecated-c-functions. Там есть хорошие ответы. Посмотрите на первый комментарий * KennyTM *. – karlphillip

ответ

5

Вы также можете ознакомиться с спецификациями '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'.

http://en.wikipedia.org/wiki/C1x

+0

+1 Это хорошие направления. – karlphillip

2

Если вы можете получить копию стандарта ISO C99, предисловие содержит хороший список 2-страничный основных изменений с C90.

+0

Существует проект C99, доступный в Интернете в формате PDF. Google «C99 pdf», и это должен быть первый результат. –

0

Не сильно изменилось. Для большинства практических целей язык, описанный в K & R2, по-прежнему используется. В 1999 году появился новый стандарт C, но он не был принят столь же успешно и широко, как вариант стандарта 1989 года (который также описывает K & R2).

Наиболее важные изменения в C99, которые могли бы разорвать существующие программы являются:

  • неявное предположение о типе int в объявлениях была удалена. Просто убедитесь, что вы всегда четко указываете типы своих функций и переменных.
  • Вызов функции без предварительного объявления устарел. Просто убедитесь, что вы объявляете все функции перед использованием, предпочтительно с прототипом.

Оба они были задерживаемыми от достандартных дней и считались плохой практикой в ​​течение длительного времени.

Единственная функция, которая следует избегать (и всегда была) gets().

Смежные вопросы