C strtok函数设计

C strtok函数设计,c,c99,C,C99,函数的作用是:使用静态变量 因此它不是再进入者。和不能用于分析多个字符串 我想知道的是为什么strtok()是这样设计的? strtok_r()应该是strtok() 该函数将来会保留在标准库中吗?该函数不会更改。向后兼容性对于标准来说是一件大事 为什么函数不可重入?嗯,在70年代它被设计时我不在那里,但我认为它编写的用例不需要再增强。然后,它的使用扩展了,因为它是有用的,并且保持兼容性比增加的再增强灵活性更可取。最后,委员会规范了现有实践,而不是在已有解决方案的情况下设计新的解决方案。因为它是

函数的作用是:使用静态变量

因此它不是再进入者。和不能用于分析多个字符串

我想知道的是为什么strtok()是这样设计的? strtok_r()应该是strtok()


该函数将来会保留在标准库中吗?

该函数不会更改。向后兼容性对于标准来说是一件大事


为什么函数不可重入?嗯,在70年代它被设计时我不在那里,但我认为它编写的用例不需要再增强。然后,它的使用扩展了,因为它是有用的,并且保持兼容性比增加的再增强灵活性更可取。最后,委员会规范了现有实践,而不是在已有解决方案的情况下设计新的解决方案。

因为它是很久以前编写的,在多线程普及之前,接口设计中没有考虑到它,即使没有考虑多线程,它仍然有缺陷,因为您不能同时解析多个字符串。这是一个太主观的问题,无法回答。我投票决定关闭它。为什么它是这样设计的问题只能由最初设计的人来回答,他将很难找到。