首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >常见的前C89编译器/stdlib习语(1985-1988年)

常见的前C89编译器/stdlib习语(1985-1988年)
EN

Stack Overflow用户
提问于 2013-01-30 19:12:49
回答 5查看 320关注 0票数 7

我正在为虚构的DCPU-16 CPU编写一个C编译器(它将用于0x10C游戏)。在这个游戏世界里,为系统编写的任何原始软件都是在1988年之前(或期间)开发的:所以我试图编写我的编译器,就像它在1985-1988年之间被编码一样。我已经得到了C89标准的副本,但是我想知道在此之前的普通编译器与这个时期的标准和常见的编码风格有什么不同。

到目前为止,这就是我所假设的:

  • 我需要使用预处理器支持来定义新旧样式的函数定义/原型。
  • 编码风格通常对类型、函数和变量使用"something_with_an_underscore“(这是真的吗?)这一时期匈牙利的符号有多好?骆驼的案子呢?)

其他我想知道的事情:

  • 普通的c编译器/stdlib与后来的C89标准有什么不同?
  • 流行的通用代码模式是什么?
  • 公共变量当时是如何命名的(i,n,foo,bar?)
  • 你有当时的示例代码吗?
  • 等等..。
EN

回答 5

Stack Overflow用户

发布于 2013-01-30 19:30:07

当没有明确的标准时,人们只关心得到它的“工作”。它适用于任何东西,而不仅仅是C语言。因此,很难区分所有预标准编码风格/命名约定等与标准的编码风格/命名约定之间的区别。我想大多数人都会追随K&R书中的任何东西(第一和第二本)。

作为样品..。

你可以看看Dennis的网站,他在那里给出了一些例子:早期的C编译器和语言。您可以通过该网站搜索更多相关信息。但我不认为你的所有问题都能得到答案。

票数 2
EN

Stack Overflow用户

发布于 2014-08-12 22:02:29

你可以做的一件奇怪的丑恶的事情,这可能会在游戏中造成一个整洁的“谜题”,那就是早期的预处理器实际上会扫描并替换字符串文字内容中定义的宏!

所以,例如

代码语言:javascript
复制
#define foo bar
char *s = "That would be a foolish thing to do!";

会被预处理到

代码语言:javascript
复制
char *s = "That would be a barlish thing to do!";
票数 1
EN

Stack Overflow用户

发布于 2019-05-27 11:41:35

负责规范C语言的ANSI X3J11委员会于1983年成立,并于1985年4月发表了第一稿。根据EricS.Raymond的说法,“C语言在本质上是稳定的,因为X3J11委员会关于拟议标准草案的工作文件的副本在1985-1986年向编译器实现者表明了委员会的意图”。1

从85-86年的时间框架(如格子C2或MicrosoftC4.0 3 )研究编译器手册,可以看出这些编译器已经开始支持大多数ANSI C89。最突出的遗漏是缺乏constvolatile支持(尽管Microsoft已经将这些添加到保留关键字列表中)和继续使用"K&R"-style函数定义。

因此,到1988年,在野外看到ANSI C89代码并不是不合理的,尽管标准本身还没有发布--仅仅是因为编译器编写者已经将部分标准纳入他们的编译器中已有几年了。

1

2

3.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14611871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档