-1

我能够在不包含 time.h 库的情况下运行使用 randomize 函数的代码。它是否自动包含在我可能已经包含在我的代码中的其他一些库中?以下是我包含的库的列表:

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h> 
#include <io.h>
4

3 回答 3

2

这对于您的库的版本和实现非常具体。该标准不强制任何标题包含time.h 1所以你不能依赖它。

在您的情况下,它可能是,之一dos.h,例如包含(或任何其他标题)。io.hconio.htime.h


1至少不是那里的那些,也不可能在你看似古老的图书馆里。C11 说threads.h应该包括time.h

于 2013-04-02T16:51:46.827 回答
1

说什么<compiler with high warning level> yourcode.c?我的猜测是:

  • 任何一个非标准的 DOS 特定标头 ( conio.h, dos.h, io.h, ...) 都包含它,

  • 或者根本没有声明,即不包括在内,在这种情况下,您的编译器会默默地隐式地假设一个函数签名(具体来说,它假设一个返回值int以及您第一次调用它时使用的任何类型的参数)。

请注意,后一种情况是错误的,您应该注意不要这样做(因为它可能会导致您的程序调用未定义的行为)。始终在启用所有警告的情况下进行编译,以便您可以追踪此类错误。

于 2013-04-02T16:49:36.707 回答
1

当 C 编译器找不到函数的原型时,它假定它是一个返回 int 的函数。如果您没有更改默认设置,它还会打印警告功能。

所以。在您的情况下,也许 time.h 被包括在内,但请注意,如果不包括在内,它可能会导致很多问题。

于 2013-04-02T17:06:25.510 回答