我能够运行使用randomize函数的代码而不包含time.h库。它是否自动包含在我可能已包含在我的代码中的其他库中?以下是我包含的库列表:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
#include <io.h>
答案 0 :(得分:2)
这非常特定于您的库的版本和实现。该标准不强制任何标题包含time.h
1 ,因此您不能依赖它。
在您的情况下,可能是dos.h
,io.h
,conio.h
中的一个包含time.h
(或其中任何其他标题)值得)。
1 至少不是那些那些,而且不太可能在你看似古老的图书馆里。 C11说threads.h
应该包含time.h
答案 1 :(得分:1)
<compiler with high warning level> yourcode.c
说什么?我的猜测是:
其中一个非标准的DOS专用标头(conio.h
,dos.h
,io.h
,...)包含它,
或根本没有声明,我。即它不包括在内,在这种情况下,你的编译器默默地和隐式地假设一个函数签名(具体来说,它假定返回值为int
以及你第一次调用它的任何类型的参数)。
请注意,后一种情况错误,,您应该注意不要这样做(因为它可能会导致您的程序调用未定义的行为)。始终在启用所有警告的情况下进行编译,以便您可以跟踪此类错误。
答案 2 :(得分:1)
当C编译器无法找到函数的原型时,它假定它是一个返回int的函数。如果您没有更改默认设置,它还会打印警告功能。
因此。在你的情况下,也许包括time.h,但要注意,如果不是这样,它会引起很多问题。