функциональный дизайн strtok - PullRequest
2 голосов
/ 01 апреля 2011

Функция strtok () использует статическую переменную.

Таким образом, она не является повторной.и не может использоваться для разбора нескольких строк.

Что я хочу знать, так это почему strtok () разработан таким образом?strtok_r () должен был быть strtok ().

Эта функция останется в стандартной библиотеке в будущем?

1 Ответ

3 голосов
/ 01 апреля 2011

Функция не изменится. Обратная совместимость очень важна для стандартов.

Почему функция не реентерабельна? Ну, я не был там в 70-х годах, когда он был спроектирован, но я предполагаю, что повторный вход не был необходим для сценариев использования, которые были написаны. Затем его использование расширилось, поскольку оно было полезным, и сохранение совместимости было более желательным, чем добавленная гибкость повторного входа. И, наконец, комитет нормализовал существующую практику и вместо разработки нового решения, когда оно уже существовало.

...