C语言 如何理解不同操作系统上的studio .h不同



首先,我说的是类unix系统。

我看了一下Mac OS, Linux, Minix和K& C书中"FILE"结构的定义,它们都是不同的。

在K& rc书中,很清楚

typedef struct _iobuf{
    int cnt;
    char *ptr;
    char *base;
    int  flag;
    int  fd;
} FILE;
在Mac OS上,

在结构体中有更多的内容。

在Linux(3.0)上,它是

typedef _IO_FILE FILE;

头写着"在c++的iostreams之上定义ISO C studio"。他们……? Linux上的C是用c++实现的吗?不应该是相反的吗?)看起来_IO_FILE的定义在libio.h

中在Minix上,

的定义与K& r非常相似。

我的理解是stdio.h应该是C的一部分。第一个C编译器是由汇编语言实现的。C应该独立于OS类型。

HW -> asm -> C ->更复杂的C -> UNIX上的机器码

现在,不同的操作系统(各种UNIX)上有不同的stdio.h,编译器都是gcc。

如何理解?

非常感谢。阿尔弗雷德

FILE结构体是平台相关的,它的字段由C库内部使用。你不应该依赖于它里面的东西

您自己的C代码不应该依赖于操作系统。C头文件和内部CRT实现依赖于操作系统。跨平台编程的意义:编写代码,在不同的操作系统中编译,应该可以工作。然而,底层工具(C,跨平台库)是与特定于操作系统的API交互的,它们在不同的操作系统中是不同的。

当然,你不应该使用不透明结构的字段,这会破坏与平台无关的代码。

相关内容

  • 没有找到相关文章

最新更新