这个问题说是问题也不是问题,因为很多都是由于历史原因造成的。C语言有很长时间就是自由发展的,iso标准出来之前已经有很多很多的实现版本了,这些版本里可能都实现了某些基本的函数,但是具体形式上有差别。为了保持兼容所以有些函数就避免用以前普遍用了的名字,而采取下划线名字作为标准函数名。
一般情况下,只有已经广泛使用的系统库函数和宏才有资格使用_甚至__打头,为的是不与用户定义的名字冲突,所以B.Stroustup在《The C++ Programming Language》中告诫我们一般不要使用_或__打头的标志符,这也是一个编程风格的问题吧。