10.5编译有时候缺少一个或多个头文件怎么回事?
根据“缺少的” 头文件的种类, 有几种情况。
如果缺少的头文件是标准头文件, 那么你的编译器有问题。你得向你的供货商或者精通你的编译器的人求助。
对于非标准的头文件问题更复杂一些。有些完全是系统或编译器相关的。某些是完全没有必要的, 而且应该用它们的标准等价物代替。例如, 用<stdlib.h> 代替<malloc.h>。其它的头文件, 如跟流行的附加库相关的, 可能有相当的可移植性。
标准头文件存在的部分原因就是提供适合你的编译器, 操作系统和处理器的定义。你不能从别人那里随便拷贝一份就指望它能工作, 除非别人跟你使用的是同样的环境. 你可能事实上有移植性问题(参见第19 章) 或者编译器问题。否则,参见问题18.18。
如果缺少的头文件是标准头文件, 那么你的编译器有问题。你得向你的供货商或者精通你的编译器的人求助。
对于非标准的头文件问题更复杂一些。有些完全是系统或编译器相关的。某些是完全没有必要的, 而且应该用它们的标准等价物代替。例如, 用<stdlib.h> 代替<malloc.h>。其它的头文件, 如跟流行的附加库相关的, 可能有相当的可移植性。
标准头文件存在的部分原因就是提供适合你的编译器, 操作系统和处理器的定义。你不能从别人那里随便拷贝一份就指望它能工作, 除非别人跟你使用的是同样的环境. 你可能事实上有移植性问题(参见第19 章) 或者编译器问题。否则,参见问题18.18。