![]() |
1
6
一个词:遗产。不幸的是,我们必须忍受它。 只是猜测:也许在那个时候,“const char*”看起来更灵活,因为它在任何方面都不受限制。位掩码只能有32个不同的值。在我看来现在像个雅格尼。 更多的猜测:伙计们很懒惰,写“rb”比“mask”“mask”“that:” |
![]() |
2
4
我推测这是以下一种或多种情况(不幸的是,我无法快速找到任何支持性参考资料,因此这可能仍然是推测):
例如,假设神话中的C标准
不会有编译器错误,但是除非
再说一次,他们可能根本不会想到这件事…… |
![]() |
3
4
最早提到
它显示了
看看代码,
很难确定,特别是考虑到这本书没有花很多时间解释
|
![]() |
4
4
我相信字符串而不是简单的位掩码的一个优点是它允许平台特定的扩展,而不是位设置。纯粹假设:
对于这个小发明,
在IBM的大型机MVS O/S上,
潜在的
|
![]() |
5
3
丹尼斯·里奇有话要说,从 http://cm.bell-labs.com/cm/cs/who/dmr/chist.html
所以我说问问 Mike Lesk ,将结果发布在此处作为您自己问题的答案,并为此获得一堆分数。尽管你可能想让问题听起来不那么像批评;-) |
![]() |
6
2
我必须说,我很感激——我知道键入“r”而不是io-open-flag-r,还是ioflag-r或sysflags-open-rmode或其他什么类型的 |
![]() |
7
2
丹尼斯·里奇(1993年)写道 an article about the history of C 以及它是如何从B逐渐演变而来的。一些设计决策的动机是避免对用B编写的现有代码或C的雏形版本进行源代码更改。
C预处理器直到1972/3才被引入,所以Lesk的I/O包是在没有它的情况下编写的! (在早期的not-yet-c中,指针适合使用的平台上的整数,为指针分配隐式int返回值是完全正常的。)
没有
1972年的选择
magic integer文本显然很糟糕,因此不幸的是,它显然是最有效的选项(Unix后来将其用于
字符文本显然是不可扩展的;这对于API设计者来说是显而易见的。但对于早期实现
C做了
有
一种字符数据类型(添加到B 1971中作为产生胚胎C的第一步之一,因此它在1972年仍然是新的。原来B没有
使用单字节字符串有效地传递
附言:史蒂夫·杰索普的回答同样激励了我写这篇文章。
可能相关:
strcpy() return value
.
|
![]() |
8
0
正如图马斯佩尔科宁所说,这是遗产。 就我个人而言,我想知道是否有一些错误的SAP认为它是更好的,因为键入的字符更少?在过去,程序员的时间比现在更受重视,因为它不太容易被访问,编译器也不那么出色。 这只是猜测,但我可以理解为什么有些人会喜欢在这里和那里保存一些字符(请注意,任何标准库函数名都没有冗长的内容…我提出了string.h的“strstrstr”和“strchr”可能是不必要的简洁性的最好例子。 |