在C中使用randomize()而不使用time.h

时间:2013-04-02 16:45:29

标签: c random time.h

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

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

3 个答案:

答案 0 :(得分:2)

这非常特定于您的库的版本和实现。该标准不强制任何标题包含time.h 1 ,因此您不能依赖它。

在您的情况下,可能是dos.hio.hconio.h中的一个包含time.h(或其中任何其他标题)值得)。


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

答案 1 :(得分:1)

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

  • 其中一个非标准的DOS专用标头(conio.hdos.hio.h,...)包含它,

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

    < / LI>

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

答案 2 :(得分:1)

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

因此。在你的情况下,也许包括time.h,但要注意,如果不是这样,它会引起很多问题。