Что изменилось со времен «языка программирования C» - PullRequest
2 голосов
/ 25 августа 2010

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

Ответы [ 3 ]

4 голосов
/ 25 августа 2010

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

Если вы хотите узнать, что ожидает «С» в будущем, взгляните на C1X, который является будущим стандартом «С».

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

1 голос
/ 25 августа 2010

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

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

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

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

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

1 голос
/ 25 августа 2010

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

...