C语言entry关键字是否曾被实现?相关疑问求解
关于C语言
entry关键字的历史细节解答 两种说法并不矛盾,只是视角不同
- K&R1中
entry确实是保留标识符,语法上被列为保留字,设计灵感来自PL/I和FORTRAN,这是早期C语言草案里的明确定义; - K&R2的表述“曾为保留字但从未使用,现已不再保留”,这里的“从未使用”指的是它从未被纳入C语言的核心正式特性——K&R团队在后续迭代中发现这个特性冗余,没有把它写进C的标准语法逻辑里,后来ANSI C标准化直接移除了这个保留字。K&R2的简化表述是因为这个特性最终没有成为C的一部分,历史使用场景极少,没必要过多展开细节。
确实有编译器实现过entry,具体实例包括
entry的作用是给函数定义多个入口点,允许从函数的中间位置开始执行,类似PL/I里的同名特性。曾经支持它的编译器有:
- PCC(Portable C Compiler):早期贝尔实验室之外最流行的C编译器,部分版本支持
entry作为非标准扩展,用来实现多入口函数; - 早期UNIX系统的cc编译器:比如Version 6和Version 7 UNIX自带的C编译器,有过实验性的
entry支持,但因为实用性低很快被移除; - 小众领域的专用编译器:早年一些面向嵌入式或系统编程的小众编译器,为了方便从PL/I/FORTRAN迁移代码,短暂提供过
entry的兼容支持。
总结
entry是C语言早期设计阶段的一个实验性保留字,从未进入正式标准语法,但确实有部分非标准编译器做过实现。K&R2的表述和相关Stack Overflow答案分别从官方标准和实际实现历史两个角度描述,不存在冲突。
内容的提问来源于stack exchange,提问作者Chi_Iroh
相关产品推荐
相关产品推荐

