まず第一に、私は 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 は OS の種類に依存しない必要があります。
ハードウェア上のマシンコード -> asm -> C -> より複雑な C -> UNIX
そして今、さまざまな OS (すべての種類の UNIX) にさまざまな stdio.h があり、コンパイラはすべて gcc です。
これを理解する方法は?
どうもありがとう、アルフレッド