问但我不能使用所有这些非标准、依赖于系统的函数,因为我的程序必须兼容 ANSI!
答你运气不好了。要么是你误解了你的需求,要么这是一个不可能实现的需求。ANSI/ISO 标准 C 根本就没有定义这些事情的做法;它是一个语言标准,而不是一个操作系统标准。一个解决了许多这些问题的国际标准是 POSIX (IEEE 1003.1, ISO/IEC 9945-1),并且许多操作系统(不只是 Unix)现在都有 POSIX 兼容的编程接口。
一个程序中的大多数部分都兼容 ANSI 是可能的,而且也是可取的,将依赖于系统的功能推迟到少数几个文件中少数几个函数中,这些函数要么经过大量的 `#ifdef` 处理,要么为移植到的每个系统完全重写;请参见问题 19.1 作为示例。另请参见问题 19.42。