首先,我说的是类 UNIX 系统。
我在 Mac OS、Linux、Minix 和 K&R C 书中查看了“FILE”结构的定义,它们都是不同的。
在K&R C书里,很清楚
typedef struct _iobuf{
int cnt;
char *ptr;
char *base;
int flag;
int fd;
} FILE;
在 Mac OS 上,它在结构中包含更多内容。
在 Linux (3.0) 上,它是
typedef _IO_FILE FILE;
标题显示“在 C++ iostream 之上定义 ISO C stdio”。嗯……?(Linux上的C是由C++实现的?不应该相反吗?)看起来像_IO_FILE定义在libio.h
在 Minix 上,定义与 K&R 非常相似。
我的理解是 stdio.h 应该是 C 的一部分。第一个 C 编译器是由汇编语言实现的。并且 C 应该独立于操作系统类型。
硬件机器码 -> asm -> C -> 更复杂的 C -> UNIX
现在,不同的操作系统(各种UNIX)上有不同的stdio.h,编译器都是gcc。
这个怎么理解?
非常感谢,阿尔弗雷德