2011-04-01 6 views
2

strtok() 함수는 정적 변수를 사용합니다.strtok 함수 디자인

따라서 재진입의 문제가 아닙니다. 여러 문자열을 구문 분석하는 데 사용할 수 없습니다.

제가 알고 싶은 것은 왜 strtok()가 이런 식으로 설계 되었습니까? strtok_r()은 strtok()이어야합니다.

향후이 기능이 표준 라이브러리에 남아있게됩니까?

+0

왜 하늘색입니까, 아빠? –

+4

멀티 스레드가 일반적이기 전에 인터페이스 디자인에서 고려되지 않았기 때문에 오래 전에 작성 되었기 때문에 – forsvarir

+0

멀티 스레드를 고려하지 않아도 여전히 결함이 있습니다. 한 번에 하나의 문자열. – Nyan

답변

3

기능이 변경되지 않습니다. 이전 버전과의 호환성은 표준을위한 중요한 요소입니다.

왜 함수가 재진입 적이 아닙니까? 글쎄, 나는 70 년대에 디자인되었을 때 거기에 없었지만, 재사용이 작성된 유스 케이스에는 필요 없다고 생각한다. 유용성과 호환성을 유지하면서 사용의 확산은 재주문의 유연성 향상보다 더 바람직했습니다. 그리고 마침내위원회는 기존의 관행을 표준화했으며 기존의 관행이있을 때 새로운 솔루션을 설계하는 대신에 기존의 관행을 표준화했습니다.